1. 21 Jun, 2021 3 commits
    • Kirill Smelkov's avatar
      . · 09489db6
      Kirill Smelkov authored
      09489db6
    • Kirill Smelkov's avatar
      . · cb2fae27
      Kirill Smelkov authored
      cb2fae27
    • Kirill Smelkov's avatar
      Merge branch 't' into t2 · b221b0b6
      Kirill Smelkov authored
      * t:
        .
        X wcfs: Fix ZSync to close wconn on zdb.close, even if zconn stays alive
        X lib/zodb: Connection += onShutdownCallback
        .
        X wcfs: lsof +D misbehaves - don't use it
        X wcfs: _fuse_unmount: Try first `kill -TERM` before `kill -QUIT` wcfs
        X wcfs: Tune _fuse_unmount to include `fusermount -u` error message into raised exception
        X wcfs: Teach start to start successfully even after unclean wcfs shutdown
        fixup! X wcfs: Run fusermount and friends with /bin:/usr/bin always on path
        X wcfs: Run fusermount and friends with /bin:/usr/bin always on path
        X wcfs: Add start to spawn a Server that can be later stopped  (draft)
      b221b0b6
  2. 20 Jun, 2021 1 commit
  3. 18 Jun, 2021 7 commits
    • Kirill Smelkov's avatar
      X wcfs: Fix ZSync to close wconn on zdb.close, even if zconn stays alive · 7203d7ab
      Kirill Smelkov authored
      Even if ZODB DB is closed and releases zconn from its .pool, zconn can
      still stay alive being referenced from any other live python object -
      e.g. from a frame, a traceback etc. This situation in particular happens
      under ERP5's runUnitTest.
      
      As the result, if we don't hook into DB.close and close wconn only on
      zconn GC, files opened on WCFS filesystem stay opened, and WCFS server
      cannot be cleanly unmounted when test run completes.
      
      -> Fix it.
      
      P.S. ZODB@bbd03b3a is good, but does
      not really solve this problem because, once again, zconn stays
      referenced from objects besides DB.
      7203d7ab
    • Kirill Smelkov's avatar
      X lib/zodb: Connection += onShutdownCallback · a26d9659
      Kirill Smelkov authored
      In the next patch we'll need this functionality to subscribe ZSync into
      db.close to know when ZODB Connection is shut down even if it stays
      alive referenced by some other objects.
      a26d9659
    • Kirill Smelkov's avatar
      . · 8dcaa5de
      Kirill Smelkov authored
      8dcaa5de
    • Kirill Smelkov's avatar
      X wcfs: lsof +D misbehaves - don't use it · 3244f3a6
      Kirill Smelkov authored
      For example even with live wcfs lsof +D output differes from regular lsof and is misleading:
      
          LSOF /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2:
      
          COMMAND     PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
          runUnitTe 29137 slapuser34   24r   REG   0,48      111    4 /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2/.wcfs/zurl
          runUnitTe 29137 slapuser34   25u   REG   0,48        0    7 /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2/head/watch
          runUnitTe 29137 slapuser34   26r   REG   0,48  2097152    9 /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2/head/bigfile/00000000000077e2
      
          LSOF +D /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2:
      
          COMMAND     PID       USER   FD   TYPE DEVICE SIZE/OFF       NODE NAME
          runUnitTe 29137 slapuser34   24r   REG   0,48      111 4294967295 /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2/.wcfs/zurl
          runUnitTe 29137 slapuser34   25u   REG   0,48        0 4294967295 /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2/.wcfs/zurl
          runUnitTe 29137 slapuser34   26r   REG   0,48  2097152 4294967295 /dev/shm/wcfs/b53b61099c740b452b383db6df6dce4ad6d23ba2/.wcfs/zurl
      3244f3a6
    • Kirill Smelkov's avatar
      X wcfs: _fuse_unmount: Try first `kill -TERM` before `kill -QUIT` wcfs · 153c002a
      Kirill Smelkov authored
      Just aborting the FUSE connection does not make WCFS to exit. This abort
      is needed to avoid deadlocks, but we should also signal WCFS it should
      stop. Not doing so will lead to timeout in wait after FUSE connection
      abort and `kill -QUIT` triggered, which makes WCFS crash and print lots
      of traceback to stderr before exiting.
      153c002a
    • Kirill Smelkov's avatar
      X wcfs: Tune _fuse_unmount to include `fusermount -u` error message into raised exception · 15389db0
      Kirill Smelkov authored
      Previously that message was printed to stderr and it was very confusing:
      we had something in the exception message, something in the log and
      something in stderr.
      
      Now exception message is self-sufficient and log provides more details.
      15389db0
    • Kirill Smelkov's avatar
      X wcfs: Teach start to start successfully even after unclean wcfs shutdown · 6b22f8c4
      Kirill Smelkov authored
      This patch does to start what b0ca031f did for join/serve.
      
      Stop duplicating the code and factor logic to "attach to wcsrv, or
      prepare to start" into _try_attach_wcsrv function.
      6b22f8c4
  4. 17 Jun, 2021 2 commits
    • Kirill Smelkov's avatar
    • Kirill Smelkov's avatar
      X wcfs: Run fusermount and friends with /bin:/usr/bin always on path · 5fcec261
      Kirill Smelkov authored
      For example runUnitTest in ERP5 runs test program with $PATH set without those
      directores. This leads to failures like
      
            File "/srv/slapgrid/slappart16/srv/testnode/djk/soft/950bed0366ff018b829e9bbb7dc3326f/parts/wendelin.core/wcfs/__init__.py", line 533, in _is_mountpoint
              mounted = (0 == subprocess.call(["mountpoint", "-q", path]))
            File "/srv/slapgrid/slappart16/srv/testnode/djk/shared/python2.7/a8bdae732e550b385eb04a06ed09d383/lib/python2.7/subprocess.py", line 172, in call
              return Popen(*popenargs, **kwargs).wait()
            File "/srv/slapgrid/slappart16/srv/testnode/djk/shared/python2.7/a8bdae732e550b385eb04a06ed09d383/lib/python2.7/subprocess.py", line 394, in __init__
              errread, errwrite)
            File "/srv/slapgrid/slappart16/srv/testnode/djk/shared/python2.7/a8bdae732e550b385eb04a06ed09d383/lib/python2.7/subprocess.py", line 1047, in _execute_child
              raise child_exception
          OSError: [Errno 2] No such file or directory
      
      where those system programs are not found.
      5fcec261
  5. 16 Jun, 2021 2 commits
  6. 15 Jun, 2021 6 commits
  7. 14 Jun, 2021 8 commits
  8. 13 Jun, 2021 1 commit
  9. 11 Jun, 2021 10 commits