Merge branch '10805-avoid-llfuse-deadlock'
[arvados.git] / services / fuse / tests / mount_test_base.py
index 20192f9d84302e1d9967136bcfa19e03ef7012dd..96ff889fcfbdb0de8e2d07ed0ea6a15ebd6f0bfe 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 import arvados
 import arvados_fuse as fuse
 import arvados.safeapi
@@ -39,6 +43,10 @@ class MountTestBase(unittest.TestCase):
         self.api = api if api else arvados.safeapi.ThreadSafeApiCache(arvados.config.settings())
         self.llfuse_thread = None
 
+        # Workaround for llfuse deadlock bug. See #10805, #8345,
+        # https://bitbucket.org/nikratio/python-llfuse/issues/108
+        llfuse.close = lambda *args: None
+
     # This is a copy of Mount's method.  TODO: Refactor MountTestBase
     # to use a Mount instead of copying its code.
     def _llfuse_main(self):
@@ -66,6 +74,8 @@ class MountTestBase(unittest.TestCase):
 
     def tearDown(self):
         if self.llfuse_thread:
+            if self.operations.events:
+                self.operations.events.close(timeout=10)
             subprocess.call(["fusermount", "-u", "-z", self.mounttmp])
             t0 = time.time()
             self.llfuse_thread.join(timeout=10)