Open mstfdkmn opened 4 days ago
I believe this is at least related to if not a subset of the following: https://github.com/irods/irods/issues/3902 https://github.com/irods/irods/issues/4983 https://github.com/irods/irods/issues/5992 https://github.com/irods/irods/issues/7302
A similar issue was also reported (by Ingrid!) in the Globus Connector before and was fixed: https://github.com/irods/irods_client_globus_connector/issues/101 But apparently did not fix this situation...
So this situation is only triggered when all three conditions are met? That is, the path must include at least one space, a single quotation mark, and the word "and"? Or is the problem present with only a subset of these?
We have a fix for the overall GenQuery1 parser problem in this PR: #7819 I would bet that the issue is resolved by that change. We have held off on introducing it to the stable branch because it will affect all queries inside and outside of the system and could introduce unforeseen instability.
A similar issue was also reported (by Ingrid!) in the Globus Connector before and was fixed: https://github.com/irods/irods_client_globus_connector/issues/101 But apparently did not fix this situation...
Yes, they might be similar, but it seems the error code on the client side is different.
So this situation is only triggered when all three conditions are met? That is, the path must include at least one space, a single quotation mark, and the word "and"? Or is the problem present with only a subset of these?
Yes, that is correct. This situation is only triggered when all three conditions are met: without ‘and’ with others, without a single quotation mark with others, and without a space. Please see the new test results below (from another client machine and iRODS):
root@eb8c3a92a56e:/# ils "myfile'"
/icts/home/u0137480/colA plus colB/myfile'
root@eb8c3a92a56e:/# ils myfile
/icts/home/u0137480/colA and colB/myfile
root@eb8c3a92a56e:/# ils "myfile'"
/icts/home/u0137480/test/myfile'
But please note that when I try to reproduce the issue with a single file under the three conditions, I encounter the same client error with ‘iput’ too. Steps:
root@eb8c3a92a56e:/# ipwd
/icts/home/u0137480/test
touch "myfile' name and id"
root@eb8c3a92a56e:/# iput "myfile' name and id"
remote addresses: 10.114.48.180 ERROR: putUtil: put error for /icts/home/u0137480/test/myfile' name and id, status = -1107000 status = -1107000 NO_COLUMN_NAME_FOUND
irods logs:
[2024-11-18T10:01:46.293Z][icts-t-cloud-rdm-hev-1] {"processname": "irods", "groupname": "irods", "pid": "96", "channel": "stdout", "irods": {"log_category": "legacy", "log_level": "error", "log_message": "[create_new_replica:536] - [NO_COLUMN_NAME_FOUND: query fill failed for [select DATA_ID, DATA_REPL_NUM where COLL_NAME = '/icts/home/u0137480/test' and DATA_NAME = 'myfile' name and id' and DATA_RESC_HIER = 'default;netapp']\n\n] [error_code=[-1107000], path=[/icts/home/u0137480/test/myfile' name and id], hierarchy=[default;netapp]", "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.3", "server_host": "icts.irods.t.icts.kuleuven.be", "server_pid": 293740, "server_timestamp": "2024-11-18T10:01:46.292Z", "server_type": "agent", "server_zone": "icts"}}
[2024-11-18T10:01:46.294Z][icts-t-cloud-rdm-hev-1] {"processname": "irods", "groupname": "irods", "pid": "96", "channel": "stdout", "irods": {"log_category": "legacy", "log_level": "error", "log_message": "[single_buffer_put:267] - failed to open data object [error_code=[-1107000], path=[/icts/home/u0137480/test/myfile' name and id]]", "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.3", "server_host": "icts.irods.t.icts.kuleuven.be", "server_pid": 293740, "server_timestamp": "2024-11-18T10:01:46.292Z", "server_type": "agent", "server_zone": "icts"}}
The file is uploaded. If I want to list file (not its parent col):
root@eb8c3a92a56e:/# ils "myfile' name and id"
iRODS exception occurred: [NO_COLUMN_NAME_FOUND: query fill failed for [select DATA_USER_NAME, DATA_ZONE_NAME, DATA_ACCESS_NAME, USER_TYPE where COLL_NAME = '/icts/home/u0137480/test' and DATA_NAME = 'myfile' name and id' and DATA_TOKEN_NAMESPACE = 'access_type']
]
If I want to reupload, the iput command hangs:
root@eb8c3a92a56e:/# iput -f "myfile' name and id"
Bug Report
iRODS Version, OS and Version
4.3.2, almalinux9 iCommands 4.3.2
4.3.3, almalinux9 iCommands 4.3.3 irods_client_globus_connector 4.3.3.0
What did you try to do?
We wanted to sync a dataset that includes spaces, single quotation marks, and the word ‘and’ in the path.
Expected behavior
We expect the transfer to complete without any issues. Probably the connector (and some other clients) cannot translate the path correctly.
Observed behavior (including steps to reproduce, if applicable)
The transfer repeatedly encounters the following errors.
_The full path (queried for checksum) in the screenshot as follows /set/home/SusMat/0archive/Michaël Lalanne-Tisné/Michael/Backup/Docs/Administration and info/Demande d'autorisation de d+®placement - original.docx
clinet side:
errors in the irods logs:
To reproduce this issue by iCommands:
querying the path with ils fails:
Another look:
without "and" works (another collection that is named with spaces and contains the same object):
iquest query is working too:
We suspect the globus issue might lie in the construction of the query string or the query itself, as indicated in the following code: https://github.com/irods/irods_client_globus_connector/blob/main/DSI/globus_gridftp_server_iRODS.cpp#L1572-L1578.