From 44fe527a4278efc7fa659b03dbf1b2a11e8e9ff2 Mon Sep 17 00:00:00 2001 From: Benny Halevy Date: Sun, 1 Aug 2021 10:25:59 +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 --- .../org/apache/cassandra/service/StorageService.java | 11 ++++++----- .../apache/cassandra/service/StorageServiceMBean.java | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/apache/cassandra/service/StorageService.java b/src/main/java/org/apache/cassandra/service/StorageService.java index 51ecc49..d0156c3 100644 --- a/src/main/java/org/apache/cassandra/service/StorageService.java +++ b/src/main/java/org/apache/cassandra/service/StorageService.java @@ -648,11 +648,12 @@ public class StorageService extends MetricsMBean implements StorageServiceMBean, * Forces major compaction of a single keyspace */ @Override - public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) + public void forceKeyspaceCompaction(boolean offStrategy, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException { - log(" forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); + log(" forceKeyspaceCompaction(boolean offStrategy, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException"); MultivaluedMap queryParams = new MultivaluedHashMap(); APIClient.set_query_param(queryParams, "cf", APIClient.join(columnFamilies)); + APIClient.set_bool_query_param(queryParams, "offstrategy", offStrategy); client.post("/storage_service/keyspace_compaction/" + keyspaceName, queryParams); } @@ -660,7 +661,7 @@ public class StorageService extends MetricsMBean implements StorageServiceMBean, public void forceKeyspaceCompactionForTokenRange(String keyspaceName, String startToken, String endToken, String... tableNames) throws IOException, ExecutionException, InterruptedException { // TODO: actually handle token ranges. - forceKeyspaceCompaction(keyspaceName, tableNames); + forceKeyspaceCompaction(false, keyspaceName, tableNames); } /** @@ -1698,10 +1699,10 @@ public class StorageService extends MetricsMBean implements StorageServiceMBean, } @Override - public void forceKeyspaceCompaction(boolean splitOutput, String keyspaceName, String... tableNames) + public void forceKeyspaceCompaction(boolean splitOutput, boolean offStrategy, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException { // "splitOutput" afaik not relevant for scylla (yet?...) - forceKeyspaceCompaction(keyspaceName, tableNames); + forceKeyspaceCompaction(offStrategy, keyspaceName, tableNames); } @Override diff --git a/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java index a3dce1c..36eabd2 100644 --- a/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java @@ -312,13 +312,13 @@ public interface StorageServiceMBean extends NotificationEmitter { /** * Forces major compaction of a single keyspace */ - public void forceKeyspaceCompaction(boolean splitOutput, String keyspaceName, String... tableNames) + public void forceKeyspaceCompaction(boolean splitOutput, boolean offStrategy, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException; /** * Forces major compaction of a single keyspace. */ - public void forceKeyspaceCompaction(String keyspaceName, String... tableNames) + public void forceKeyspaceCompaction(boolean offStrategy, String keyspaceName, String... tableNames) throws IOException, ExecutionException, InterruptedException; @Deprecated