chStaiger / iBridges-Gui

A graphical user interface to iRODS employing the iBridges python package.
https://chstaiger.github.io/iBridges-Gui/
GNU General Public License v3.0
15 stars 8 forks source link

Synchronise Tab crashes due to NetworkError #205

Open jnimoth opened 2 months ago

jnimoth commented 2 months ago

Describe the bug Just tried to start iBridges GUI on my Linux device and the program/window freezes completely after I specify password and try to connect.
No error is shown. It just freezes.

The program was freshly installed via pip in a new Python venv. Normal ibridges without GUI works fine with the same config.

To Reproduce Install iBridges-gui via pip, start it, select "connect", then specify password and start connection.

Expected behavior ibridges-gui starts and I can use it.

Screenshots image

Provide some information:

chStaiger commented 2 months ago

Thanks for letting us know! I will try to reproduce that on a VM. Can you please paste the content of the ~/.ibridges/ibridges-gui.log here?

jnimoth commented 2 months ago

Sure, but there is not much to see:

 $ cat ~/.ibridges/ibridges-gui.log 

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T16:30:33.026504
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T16:44:32.958262
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T16:49:39.949979
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T16:51:57.800514
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T16:52:06.566994
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T16:52:12.264242
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T16:59:44.716232
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-12T17:01:00.509523
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-14T10:45:04.742795
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-14T10:47:30.240627
__________________________________________________
__________________________________________________

__________________________________________________
__________________________________________________
     Starting iBridges-GUI 
    2024-06-14T11:02:38.199202
__________________________________________________
__________________________________________________

Three trials from today, but also some entries from two days ago when I tried it already and had the same issue.

chStaiger commented 2 months ago

I see .... I will make a branch with some more debug statements to find out where exactly it hangs. Please bear with me ... ;)

chStaiger commented 1 month ago

It lies in the Tab Synchronise data. As soon as this one is commented out in the __main__.py the GUI works as expected.

chStaiger commented 1 month ago

It must be in the constructor, maybe in these lines:

57         self._init_local_fs_tree()
58         self._init_irods_tree()
chStaiger commented 1 month ago

@jnimoth I think I found the issue, it indeed lies in the initialising of the iRODS tree. If I am not mistaken you also have read rights in the iRODS path "/" which I did not expect in the code. It is fixed now in the branch 205-freeze.

Can you please install the GUI from there again and see whether it solves the issue?

pip install pip install git+https://github.com/chStaiger/iBridges-Gui.git@205-freeze
jnimoth commented 1 month ago

So I just tested with this branch and the behavior is now indeed different: I can start the GUI with all the tabs, also sync tab being enabled. It does not freeze anymore!

image

But:

If I am in the sync tab, it crashes when I open a folder on the iRODS side. It first works, and I can open the tree, but as soon as I want to open the level /rug/home/, it crashes. The same was seen if I want to go to /rug/trash/home/.

image

The error shown when the program crashed is:

CRITICAL:irods.connection:Read 0 bytes from socket instead of expected 4 bytes
ERROR:irods.connection:Could not receive server response
Traceback (most recent call last):
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/connection.py", line 133, in recv
    msg = iRODSMessage.recv(self.socket)
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/message/__init__.py", line 294, in recv
    rsp_header_size = _recv_message_in_len(sock, 4)
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/message/__init__.py", line 230, in _recv_message_in_len
    raise socket.error(msg)
OSError: Read 0 bytes from socket instead of expected 4 bytes

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/ibridgesgui/irods_tree_model.py", line 140, in refresh_subtree
    self.add_subtree(tree_item, tree_item_data)
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/ibridgesgui/irods_tree_model.py", line 110, in add_subtree
    for item in parent_coll.subcollections + parent_coll.data_objects:
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/collection.py", line 53, in subcollections
    return [iRODSCollection(self.manager, row) for row in query]
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/collection.py", line 53, in <listcomp>
    return [iRODSCollection(self.manager, row) for row in query]
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/query.py", line 235, in get_results
    for result_set in self.get_batches():
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/query.py", line 226, in get_batches
    result_set.continue_index).execute()
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/query.py", line 197, in execute
    result_message = conn.recv()
  File "/home/jelte/python_venvs/ibridges_venv_2/lib/python3.10/site-packages/irods/connection.py", line 144, in recv
    raise NetworkException("Could not receive server response")
irods.exception.NetworkException: Could not receive server response
fish: Job 1, 'ibridges-gui' terminated by signal SIGABRT (Abort)

Also, I see the folder structure two times in the iRODS tree in the sync tab: image

chStaiger commented 1 month ago

Ok, one step further ;) I will take look at a normal iRODS instance ... so far we used Yoda instances to develop the GUI.

jnimoth commented 1 month ago

I just saw that this error seems to be just observed if the user in question is "rodsadmin". With a non-rodsadmin account, the sync tab does not seem to crash and I can navigate to different folder level. Here also some screenshots how it looks for different users:

Rodsadmin: iBridges_rodsamin

No rodsadmin: iBridges_no_rodsamin

chStaiger commented 1 month ago

I fixed the double listing of the root collection. It is an iRODS thing, that the collection / also contains itself ... (https://github.com/UtrechtUniversity/iBridges/issues/203)

>>> irods_path = IrodsPath(session, "/")
>>> irods_path.collection.subcollections
[<iRODSCollection 10003 b''>, <iRODSCollection 10004 b'tempZone'>]

Now the only problem that stays and which I could not reproduce is the crashing ...