irods / irods_resource_plugin_rados

Cacheless Ceph/rados resource plugin for iRODS
BSD 3-Clause "New" or "Revised" License
7 stars 6 forks source link

iput/iget of large file sometimes hangs #17

Closed alanking closed 5 years ago

alanking commented 5 years ago

Running the following sometimes works:

$ iput -vR radosResc /tmp/50MiB.bin foo001
foo001                         50.000 MB | 14.904 sec | 13 thr |  3.355 MB/s
$ ils -l foo
  rods              0 radosResc     52428800 2019-03-13.16:41 & foo
$ iget foo                                                                                                                                                        
$ ls -l foo
-rw-r----- 1 irods irods 52428800 Mar 13 16:41 foo

Most of the time, however, this hangs on the rados_write or rados_read call. The hang seems to be indicative of Ceph no longer responding.

The issue appears to be resolved by acquiring the propmap_guard_ lock before calling rados_write or rados_read. This indicates that the Rados IO context, which is locked before modifying everywhere else in the code, is being affected by other threads.

Please investigate and ensure that proper locking is in place for critical sections of code.