]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/mgr/snap_schedule: log database updates for debugging
authorPatrick Donnelly <pdonnell@redhat.com>
Wed, 24 Mar 2021 00:53:58 +0000 (17:53 -0700)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 24 Mar 2021 01:24:42 +0000 (18:24 -0700)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
qa/tasks/cephfs/test_snap_schedules.py
src/pybind/mgr/snap_schedule/fs/schedule_client.py
src/pybind/mgr/snap_schedule/module.py

index 2a19d06e64c24aa0028e80582d9a6042510f5f27..f303d71d26c2c161710e0092e23e34ecc9ae54f9 100644 (file)
@@ -63,6 +63,9 @@ class TestSnapSchedules(CephFSTestCase):
     def _allow_minute_granularity_snapshots(self):
         self.config_set('mgr', 'mgr/snap_schedule/allow_m_granularity', True)
 
+    def _dump_on_update(self):
+        self.config_set('mgr', 'mgr/snap_schedule/dump_on_update', True)
+
     def setUp(self):
         super(TestSnapSchedules, self).setUp()
         self.volname = None
@@ -74,6 +77,7 @@ class TestSnapSchedules(CephFSTestCase):
         self.snapshots = set()
         self._enable_snap_schedule()
         self._allow_minute_granularity_snapshots()
+        self._dump_on_update()
 
     def tearDown(self):
         if self.vol_created:
index 779bdc9b75a582a3fbb9ed58554023076e35d47e..b72107a42df4dd72f859ef228f8f1a138166cdfc 100644 (file)
@@ -122,6 +122,10 @@ class SnapSchedClient(CephfsClient):
     def allow_minute_snaps(self) -> None:
         return self.mgr.get_module_option('allow_m_granularity')
 
+    @property
+    def dump_on_update(self) -> None:
+        return self.mgr.get_module_option('dump_on_update')
+
     def get_schedule_db(self, fs: str) -> sqlite3.Connection:
         if fs not in self.sqlite_connections:
             poolid = self.get_metadata_pool(fs)
@@ -168,6 +172,10 @@ class SnapSchedClient(CephfsClient):
             db = self.get_schedule_db(fs)
             rows = []
             with db:
+                if self.dump_on_update:
+                    dump = [line for line in db.iterdump()]
+                    dump = "\n".join(dump)
+                    log.debug(f"db dump:\n{dump}")
                 cur = db.execute(Schedule.EXEC_QUERY, (path,))
                 all_rows = cur.fetchall()
                 rows = [r for r in all_rows
index 8e39e3b02ddfe9e6424448333829c3d62f723d9b..84b04c4bb7a2b89ba6b0605734fbdc000b143434 100644 (file)
@@ -22,6 +22,14 @@ class Module(MgrModule):
             desc='allow minute scheduled snapshots',
             runtime=True,
         ),
+        Option(
+            'dump_on_update',
+            type='bool',
+            default=False,
+            desc='dump database to debug log on update',
+            runtime=True,
+        ),
+
     ]
 
     def __init__(self, *args: Any, **kwargs: Any) -> None: