]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
qa: add test for importer's unexpected client eviction after an export subtree task...
authorZhansong Gao <zhsgao@hotmail.com>
Mon, 3 Jul 2023 08:42:34 +0000 (16:42 +0800)
committerKonstantin Shalygin <k0ste@k0ste.ru>
Fri, 21 Nov 2025 12:16:01 +0000 (19:16 +0700)
Signed-off-by: Zhansong Gao <zhsgao@hotmail.com>
(cherry picked from commit f23bd5d0995e4e52e0ac43c7e8a112cd2faf9f27)

qa/tasks/cephfs/filesystem.py
qa/tasks/cephfs/test_exports.py

index 7d81a7ae11ca992f2b85f7be76e65e302b55595a..398d68623c2c153b06a024bba4ac433e8c4b461f 100644 (file)
@@ -637,6 +637,8 @@ class FilesystemBase(MDSClusterBase):
     def set_session_timeout(self, timeout):
         self.set_var("session_timeout", "%d" % timeout)
 
+    def set_session_autoclose(self, autoclose_time):
+        self.set_var("session_autoclose", "%d" % autoclose_time)
     def set_allow_standby_replay(self, yes):
         self.set_var("allow_standby_replay", yes)
 
index 50c418264114c25ecf35e08c1d7ff4017853c084..3205b37a0ecc4d79780099f5037afcd19f9addeb 100644 (file)
@@ -788,4 +788,26 @@ class TestKillExports(CephFSTestCase):
                 self.wait_until_evicted(client_id, importer_rank)
 
             # for multiple tests
-            self.mount_a.remount()
\ No newline at end of file
+            self.mount_a.remount()
+
+    def test_client_eviction(self):
+        # modify the timeout so that we don't have to wait too long
+        timeout = 30
+        self.fs.set_session_timeout(timeout)
+        self.fs.set_session_autoclose(timeout + 5)
+
+        kill_export_at = [9, 10]
+
+        exporter_rank = 0
+        importer_rank = 1
+
+        for kill in kill_export_at:
+            log.info(f"kill_export_at: {kill}")
+            self._run_kill_export(kill, exporter_rank, importer_rank)
+
+            client_id = self.mount_a.get_global_id()
+            self.wait_until_evicted(client_id, importer_rank, timeout + 10)
+            time.sleep(1)
+
+            # failed if buggy
+            self.mount_a.ls()