From 41733e9180deefc2657dbd51df0cfbe698863f7c Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Sun, 1 Aug 2021 10:32:33 +0300 Subject: [PATCH] storage_service: forceKeyspaceCompaction: add offStrategy option To trigger offstrategy compaction. e.g. immediately after repair completes. Otherwise, it is auto-triggered after a 5 minutes idle timeout. Signed-off-by: Benny Halevy --- src/java/org/apache/cassandra/service/StorageService.java | 2 +- .../org/apache/cassandra/service/StorageServiceMBean.java | 2 +- src/java/org/apache/cassandra/tools/NodeProbe.java | 4 ++-- src/java/org/apache/cassandra/tools/nodetool/Compact.java | 4 +++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index e45a9413e1..e3842b0efa 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -3039,7 +3039,7 @@ public int upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, i return status.statusCode; } - public void forceKeyspaceCompaction(boolean splitOutput, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException + public void forceKeyspaceCompaction(boolean splitOutput, boolean offStrategy, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException { for (ColumnFamilyStore cfStore : getValidColumnFamilies(true, false, keyspaceName, tableNames)) { diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java index 2f40cdaa24..cfecb0794e 100644 --- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java @@ -252,7 +252,7 @@ public interface StorageServiceMBean extends NotificationEmitter /** * Forces major compaction of a single keyspace */ - public void forceKeyspaceCompaction(boolean splitOutput, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException; + public void forceKeyspaceCompaction(boolean splitOutput, boolean offStrategy, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException; @Deprecated public int relocateSSTables(String keyspace, String ... cfnames) throws IOException, ExecutionException, InterruptedException; diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java index e5366ce4d1..572bed7475 100644 --- a/src/java/org/apache/cassandra/tools/NodeProbe.java +++ b/src/java/org/apache/cassandra/tools/NodeProbe.java @@ -418,9 +418,9 @@ public void forceUserDefinedCompaction(String datafiles) throws IOException, Exe compactionProxy.forceUserDefinedCompaction(datafiles); } - public void forceKeyspaceCompaction(boolean splitOutput, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException + public void forceKeyspaceCompaction(boolean splitOutput, boolean offStrategy, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException { - ssProxy.forceKeyspaceCompaction(splitOutput, keyspaceName, tableNames); + ssProxy.forceKeyspaceCompaction(splitOutput, offStrategy, keyspaceName, tableNames); } public void relocateSSTables(int jobs, String keyspace, String[] cfnames) throws IOException, ExecutionException, InterruptedException diff --git a/src/java/org/apache/cassandra/tools/nodetool/Compact.java b/src/java/org/apache/cassandra/tools/nodetool/Compact.java index ef10a836b2..d5823a23dc 100644 --- a/src/java/org/apache/cassandra/tools/nodetool/Compact.java +++ b/src/java/org/apache/cassandra/tools/nodetool/Compact.java @@ -47,6 +47,8 @@ public class Compact extends NodeToolCmd @Option(title = "end_token", name = {"-et", "--end-token"}, description = "Use -et to specify a token at which compaction range ends") private String endToken = EMPTY; + @Option(title = "offstrategy", name = {"--offstrategy"}, description = "Use --offstrategy to trigger offstrategy compaction") + private boolean offStrategy = false; @Override public void execute(NodeProbe probe) @@ -86,7 +88,7 @@ public void execute(NodeProbe probe) } else { - probe.forceKeyspaceCompaction(splitOutput, keyspace, tableNames); + probe.forceKeyspaceCompaction(splitOutput, offStrategy, keyspace, tableNames); } } catch (Exception e) {