From 1d6403ddad19b4eecf3de5ac6b772c3aa5dd707f Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Tue, 28 Apr 2026 00:03:58 +0300 Subject: [PATCH] test/cluster/dtest: add ScyllaCluster.compact() method Add compact() method to ScyllaCluster, delegating to ScyllaNode.compact() on each running node. Accepts optional keyspace and tables parameters to allow scoping compaction to specific keyspaces/tables. Also fix ScyllaNode.compact() to use list[str] for tables parameter and extend() instead of +=, so that passing a single table name as a string does not iterate over its characters. --- test/cluster/dtest/ccmlib/scylla_cluster.py | 5 +++++ test/cluster/dtest/ccmlib/scylla_node.py | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/test/cluster/dtest/ccmlib/scylla_cluster.py b/test/cluster/dtest/ccmlib/scylla_cluster.py index ca49dbe153..cef98422e6 100644 --- a/test/cluster/dtest/ccmlib/scylla_cluster.py +++ b/test/cluster/dtest/ccmlib/scylla_cluster.py @@ -227,6 +227,11 @@ class ScyllaCluster: def flush(self) -> None: self.nodetool("flush") + def compact(self, keyspace: str = "", tables: list[str] | None = None) -> None: + for node in self.nodelist(): + if node.is_running(): + node.compact(keyspace=keyspace, tables=tables) + @staticmethod def debug(message: str) -> None: logger.debug(message) diff --git a/test/cluster/dtest/ccmlib/scylla_node.py b/test/cluster/dtest/ccmlib/scylla_node.py index e09b893b19..cf70978454 100644 --- a/test/cluster/dtest/ccmlib/scylla_node.py +++ b/test/cluster/dtest/ccmlib/scylla_node.py @@ -647,11 +647,12 @@ class ScyllaNode: cmd.append(table) self.nodetool(" ".join(cmd), **kwargs) - def compact(self, keyspace: str = "", tables: str | None = ()) -> None: + def compact(self, keyspace: str = "", tables: list[str] | None = None) -> None: compact_cmd = ["compact"] if keyspace: compact_cmd.append(keyspace) - compact_cmd += tables + if tables: + compact_cmd.extend(tables) self.nodetool(" ".join(compact_cmd)) def drain(self, block_on_log: bool = False) -> None: