Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Data object should get stale state when transfer is interrupted #67

Open
mstfdkmn opened this issue Jun 9, 2023 · 1 comment
Open

Comments

@mstfdkmn
Copy link

mstfdkmn commented Jun 9, 2023

Bug Report

iRODS Version, OS and Version

4.3.0 almalinux8

ps. I am not sure whether this should be reported here or in the main irods repository.

What did you try to do?

  • I terminated the task that transfers an object from outside to iRODS
  • I terminated the task that transfers an object between two collections (copy ) in iRODS

Expected behavior

I expect interrupted transfers with errors in iRODS logs and also I expected objects exist in X/stale status

Observed behavior (including steps to reproduce, if applicable)

Transfers are terminated successfully and data objects have & status in irods and no error in the logs of iRODS

In line with other clients behavior, if a transfer to iRODS via globus is interrupted, the object status should be 'stale' instead of 'good'. This gets confused since data is partially written on destination not completely yet.

image

image

image

Logs in irods when a transfer via iCommands (or prc) is interupted:

[2023-06-09T13:09:24.440Z][icts-p-cloud-rdm-hev-2] irods stdout | {"log_category":"legacy","log_facility":"local0","log_level":"error","log_message":"Agent [368103] exiting with status = -4000","request_api_name":"DATA_OBJ_PUT_AN","request_api_number":606,"request_api_version":"d","request_client_user":"u0137480","request_host":"127.0.0.1","request_proxy_user":"u0137480","request_release_version":"rods4.3.0","server_host":"set.irods.icts.kuleuven.be","server_pid":368103,"server_timestamp":"2023-06-09T13:09:24.440Z","server_type":"agent"}
[2023-06-09T13:09:24.400Z][icts-p-cloud-rdm-hev-2] irods stdout | {"log_category":"legacy","log_facility":"local0","log_level":"info","log_message":"_partialDataPut: toread 4194304 bytes, 3932040 bytes read, errno = 0","request_api_name":"DATA_OBJ_PUT_AN","request_api_number":606,"request_api_version":"d","request_client_user":"u0137480","request_host":"127.0.0.1","request_proxy_user":"u0137480","request_release_version":"rods4.3.0","server_host":"set.irods.icts.kuleuven.be","server_pid":368103,"server_timestamp":"2023-06-09T13:09:24.400Z","server_type":"agent"}
[2023-06-09T13:09:24.413Z][icts-p-cloud-rdm-hev-2] irods stdout | {"log_category":"legacy","log_facility":"local0","log_level":"error","log_message":"[-]\t/irods_source/server/core/src/rsApiHandler.cpp:560:int readAndProcClientMsg(rsComm_t *, int) :  status [SYS_HEADER_READ_LEN_ERR]  errno [] -- message [failed to call 'read header']\n\t[-]\t/irods_source/lib/core/src/sockComm.cpp:198:irods::error readMsgHeader(irods::network_object_ptr, msgHeader_t *, struct timeval *) :  status [SYS_HEADER_READ_LEN_ERR]  errno [] -- message [failed to call 'read header']\n\t\t[-]\t/irods_source/plugins/network/src/ssl.cpp:528:irods::error ssl_read_msg_header(irods::plugin_context &, void *, struct timeval *) :  status [SYS_HEADER_READ_LEN_ERR]  errno [] -- message [read 0 expected 4]\n\n","request_api_name":"DATA_OBJ_PUT_AN","request_api_number":606,"request_api_version":"d","request_client_user":"u0137480","request_host":"127.0.0.1","request_proxy_user":"u0137480","request_release_version":"rods4.3.0","server_host":"set.irods.icts.kuleuven.be","server_pid":368103,"server_timestamp":"2023-06-09T13:09:24.413Z","server_type":"agent"}
[2023-06-09T13:09:24.368Z][icts-p-cloud-rdm-hev-2] irods stdout | {"log_category":"legacy","log_facility":"local0","log_level":"info","log_message":"_partialDataPut: toread 4194304 bytes, 917296 bytes read, errno = 0","request_api_name":"DATA_OBJ_PUT_AN","request_api_number":606,"request_api_version":"d","request_client_user":"u0137480","request_host":"127.0.0.1","request_proxy_user":"u0137480","request_release_version":"rods4.3.0","server_host":"set.irods.icts.kuleuven.be","server_pid":368103,"server_timestamp":"2023-06-09T13:09:24.368Z","server_type":"agent"}
[2023-06-09T13:09:24.431Z][icts-p-cloud-rdm-hev-2] irods stdout | {"log_category":"legacy","log_facility":"local0","log_level":"error","log_message":"[rsDataObjClose:803] - [Unknown iRODS error: [update_replica_size_and_throw_on_failure:463] - failed to get size in vault [error_code=[987234304], path=[/set/home/u0137480/1GB.bin], hierarchy=[default;netapp]]\n\n]","request_api_name":"DATA_OBJ_PUT_AN","request_api_number":606,"request_api_version":"d","request_client_user":"u0137480","request_host":"127.0.0.1","request_proxy_user":"u0137480","request_release_version":"rods4.3.0","server_host":"set.irods.icts.kuleuven.be","server_pid":368103,"server_timestamp":"2023-06-09T13:09:24.430Z","server_type":"agent"}
[2023-06-09T13:09:24.435Z][icts-p-cloud-rdm-hev-2] irods stdout | {"log_category":"legacy","log_facility":"local0","log_level":"error","log_message":"[-]\t/irods_source/server/core/src/rsApiHandler.cpp:560:int readAndProcClientMsg(rsComm_t *, int) :  status [SYS_HEADER_READ_LEN_ERR]  errno [] -- message [failed to call 'read header']\n\t[-]\t/irods_source/lib/core/src/sockComm.cpp:198:irods::error readMsgHeader(irods::network_object_ptr, msgHeader_t *, struct timeval *) :  status [SYS_HEADER_READ_LEN_ERR]  errno [] -- message [failed to call 'read header']\n\t\t[-]\t/irods_source/plugins/network/src/ssl.cpp:528:irods::error ssl_read_msg_header(irods::plugin_context &, void *, struct timeval *) :  status [SYS_HEADER_READ_LEN_ERR]  errno [] -- message [read 0 expected 4]\n\n","request_api_name":"DATA_OBJ_PUT_AN","request_api_number":606,"request_api_version":"d","request_client_user":"u0137480","request_host":"127.0.0.1","request_proxy_user":"u0137480","request_release_version":"rods4.3.0","server_host":"set.irods.icts.kuleuven.be","server_pid":368103,"server_timestamp":"2023-06-09T13:09:24.435Z","server_type":"agent"}
[2023-06-09T13:09:24.451Z][icts-p-cloud-rdm-hev-2] irods stdout | {"log_category":"legacy","log_facility":"local0","log_level":"error","log_message":"Agent process [368103] exited with status [1]","server_host":"set.irods.icts.kuleuven.be","server_pid":112,"server_timestamp":"2023-06-09T13:09:24.451Z","server_type":"agent_factory"}
@trel
Copy link
Member

trel commented Jun 11, 2023

Agreed.

Interrupted transfers should leave target replicas stale both either:

  1. on successful client interruption (ctrl-c) and teardown OR
  2. if the server has to clean up after an unclean client disconnect.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants