irods: Delay rule execution fails with mysql in 4.2.11
Bug Report
iRODS Version, OS and Version
- IRODS 4.2.11 on Centos 7 containers
- Mysql 8 database, SSL required, with transaction isolation level set to “READ COMMITTED”;
What did you try to do?
Executing a delayed irule, e.g.
cat > myRule.r <<'EOF'
helloWorldRule{
delay("<PLUSET>10s</PLUSET><EF>1m</EF><INST_NAME>irods_rule_engine_plugin-irods_rule_language-instance</INST_NAME>"){
writeLine('stdout', 'Hello World!');
}
}
output ruleExecOut
EOF
irule -F myRule.r -r irods_rule_engine_plugin-irods_rule_language-instance
Expected behavior
Rule gets executed every minute.
Observed behavior (including steps to reproduce, if applicable)
Rule engine starts to execute rule but execution fails or storing the result fails. The delay server dies, no other scheduled delay rules are executed.
Logs show only:
[2022-11-24T18:36:55.286Z][icts-p-cloud-rdm-leu-2] rsyslogd stdout | 2022-11-24T19:36:55.286235+01:00 gbiomed-fbi rodsServer[62485]: gbiomed_fbi - remote addresses: 172.17.0.3, 2a02:2c40:0:21::3306:28 ERROR: [-]#011/work/server/core/src/rodsAgent.cpp:556:int runIrodsAgentFactory(sockaddr_un) : status [SSL_HANDSHAKE_ERROR] errno [] -- message [failed to call 'agent start']#012#011[-]#011/work/lib/core/src/sockComm.cpp:129:irods::error sockAgentStart(irods::network_object_ptr) : status [SSL_HANDSHAKE_ERROR] errno [] -- message [failed to call 'agent start']#012#011#011[-]#011/work/plugins/network/ssl/libssl.cpp:848:irods::error ssl_agent_start(irods::plugin_context &) : status [SSL_HANDSHAKE_ERROR] errno [] -- message [error calling SSL_accept]#012
[2022-11-24T18:36:55.316Z][icts-p-cloud-rdm-leu-2] rsyslogd stdout | 2022-11-24T19:36:55.315814+01:00 gbiomed-fbi rodsServer[62465]: (null) - ERROR: Agent process [62485] exited with status [40]
Restarting the irods server process restores the delay server, which immediately tries to execute the irule again, and fails again.
Rebuilding 4.2.11 with b0b252fbba40c6744f64e488cae123408cf1382d reverted fixes the issue.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 33 (19 by maintainers)
I think a test scenario with mysql running with
require_secure_transport=ON
and with irods set to CS_NEG_REQUIRE should be enough to detect the parts in the setup script that needed adjustion. The commented parts in https://github.com/kuleuven/irods-docker/blob/main/bin/apply-patches#L28-L40 give some indications, although they need review. I remember in any case problems with the initial iput tests when irods requires ssl.No, CentOS 7 is fine in the testing environment.
The problem had to do with 4.2.11, MySQL 8, and the database schema needing changes which aren’t available in the 4.2 series.