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) {