irods / irods_client_globus_connector

The iRODS Globus Connector
2 stars 4 forks source link

Cannot rename data objects and collections via the globus interface #66

Open mstfdkmn opened 1 year ago

mstfdkmn commented 1 year ago

Bug Report

iRODS Version, OS and Version

4.3.0 almalinux8

What did you try to do?

Through the globus web interface,

Expected behavior

Renamed data objects and collections in iRODS

Observed behavior (including steps to reproduce, if applicable)

Even though the globus interface shows objects are renamed, in fact they are not renamed and this can be verified when clicked refreshed list.

image

image

image

JustinKyleJames commented 8 months ago

Can you provide a log that shows what happens when this is attempted?

Also, is there a way to simulate this via command line utilities? I don't have access to the globus GUI interface.

mstfdkmn commented 6 months ago

Hi, apparently I didn't see this or somehow skipped it. Sorry for this!

Can you provide a log that shows what happens when this is attempted?

I don't see anything both in the logs of irods and in the logs globus. As if clients don't communicate with server yet.

Also, is there a way to simulate this via command line utilities? I don't have access to the globus GUI interface.

The CLI does behave exactly as the GUI. Please see my screenshot below that shows an existing object, the rename operation and the result.

image
JustinKyleJames commented 5 months ago

I don't have that "globus" command and I don't think it is possible to do it via globus-url-copy. That said, I think I was able to reproduce this via ftp. I will take a look at implementing this.

# ftp localhost 2811
Connected to localhost.
220 dd677d87f346 GridFTP Server 16.2 (gcc64, 1701980266-86) [Globus Toolkit 1638371632] ready.
Name (localhost:root): user1
331 Password required for user1.
Password:
230 User user1 logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT Command successful.
150 Beginning transfer.
drwxr-xr-x   0     root     root            0 Jan  1 00:00 .
drwxr-xr-x   0     root     root            0 Jan  1 00:00 ..
-rwxr-xr-x   0     root     root            4 Apr 10 15:43 abc.txt
drwxr-xr-x   0     root     root            0 Apr  8 21:22 dir1
226 Transfer Complete.
ftp> rename abc.txt abc2.txt
350 OK. Send RNTO with destination name.
250 OK.
ftp> ls
200 PORT Command successful.
150 Beginning transfer.
drwxr-xr-x   0     root     root            0 Jan  1 00:00 .
drwxr-xr-x   0     root     root            0 Jan  1 00:00 ..
-rwxr-xr-x   0     root     root            4 Apr 10 15:43 abc.txt
drwxr-xr-x   0     root     root            0 Apr  8 21:22 dir1
226 Transfer Complete.
ftp> 
JustinKyleJames commented 5 months ago

Looking at the code, we need to support GLOBUS_GFS_CMD_RNTO in globus_l_gfs_iRODS_command.

In addition, there is a switch statement and the default for it just returns. I think that should be updated to return some type of not supported error as well.

korydraughn commented 5 months ago

If there's an error that indicates that, sounds appropriate to me.

mstfdkmn commented 3 months ago

Can you provide a log that shows what happens when this is attempted?

Hi, now I can provide logs requested because I could capture relevant errors in the irods logs. Please keep in mind that I captured these errors in the irods server 4.3.2 and the globus connector is the one built on latest (main branch).

[2024-06-19T12:41:10.253Z][icts-t-cloud-hev-3] {"processname": "irods", "groupname": "irods", "pid": "96", "channel": "stdout", "irods": {"log_category": "legacy", "log_level": "error", "log_message": "[-]\t/irods_source/server/core/src/rsApiHandler.cpp:565: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:229: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/tcp.cpp:190:irods::error tcp_read_msg_header(irods::plugin_context &, void *, struct timeval *) :  status [SYS_HEADER_READ_LEN_ERR]  errno [] -- message [only read [0] of [4]]\n\n", "request_api_name": "GEN_QUERY_AN", "request_api_number": 702, "request_api_version": "d", "request_client_user": "u0112360", "request_host": "127.0.0.1", "request_proxy_user": "globus", "request_release_version": "rods4.3.2", "server_host": "icts.irods.t.icts.kuleuven.be", "server_pid": 1290469, "server_timestamp": "2024-06-19T12:41:10.252Z", "server_type": "agent", "server_zone": "icts"}}
[2024-06-19T12:41:10.254Z][icts-t-cloud-hev-3] {"processname": "irods", "groupname": "irods", "pid": "96", "channel": "stdout", "irods": {"log_category": "agent", "log_level": "error", "log_message": "Agent [1290469] exiting with status = -4000", "request_api_name": "GEN_QUERY_AN", "request_api_number": 702, "request_api_version": "d", "request_client_user": "u0112360", "request_host": "127.0.0.1", "request_proxy_user": "globus", "request_release_version": "rods4.3.2", "server_host": "icts.irods.t.icts.kuleuven.be", "server_pid": 1290469, "server_timestamp": "2024-06-19T12:41:10.254Z", "server_type": "agent", "server_zone": "icts"}}
[2024-06-19T12:41:10.273Z][icts-t-cloud-hev-3] {"processname": "irods", "groupname": "irods", "pid": "96", "channel": "stdout", "irods": {"log_category": "agent_factory", "log_level": "error", "log_message": "Agent process [1290469] exited with status [1].", "server_host": "icts.irods.t.icts.kuleuven.be", "server_pid": 117, "server_timestamp": "2024-06-19T12:41:10.272Z", "server_type": "agent_factory", "server_zone": "icts"}}
korydraughn commented 3 months ago

Were those logs obtained using a build including commit 24a7ee0?

mstfdkmn commented 3 months ago

Yes. That is correct our build contains that commit.