From 658818b2d0b91d56021b883cbfb3ed9b5797e548 Mon Sep 17 00:00:00 2001 From: Juliusz Stasiewicz Date: Mon, 30 Aug 2021 17:54:05 +0200 Subject: [PATCH] Support `--load-and-stream` option from `nodetool refresh` This information is translated to {"load_and_stream", "true"} entry in the POST request to Scylla's HTTP API at `storage_service/sstables/{keyspace}` endpoint. More about this feature: scylladb/scylla#7846 This change is a consequence of scylladb/scylla-tools-java#253. --- .../apache/cassandra/service/StorageService.java | 14 ++++++++++++-- .../cassandra/service/StorageServiceMBean.java | 9 +++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/cassandra/service/StorageService.java b/src/main/java/org/apache/cassandra/service/StorageService.java index a60210b..146e350 100644 --- a/src/main/java/org/apache/cassandra/service/StorageService.java +++ b/src/main/java/org/apache/cassandra/service/StorageService.java @@ -1417,15 +1417,25 @@ public class StorageService extends MetricsMBean implements StorageServiceMBean, * The parent keyspace name * @param cfName * The ColumnFamily name where SSTables belong + * @param isLoadAndStream + * Whether or not arbitrary SSTables should be loaded (and streamed to the owning nodes) */ @Override - public void loadNewSSTables(String ksName, String cfName) { - log(" loadNewSSTables(String ksName, String cfName)"); + public void loadNewSSTables(String ksName, String cfName, boolean isLoadAndStream) { + log(" loadNewSSTables(String ksName, String cfName, boolean isLoadAndStream)"); MultivaluedMap queryParams = new MultivaluedHashMap(); queryParams.add("cf", cfName); + if (isLoadAndStream) { + queryParams.add("load_and_stream", "true"); + } client.post("/storage_service/sstables/" + ksName, queryParams); } + @Override + public void loadNewSSTables(String ksName, String cfName) { + loadNewSSTables(ksName, cfName, false); + } + /** * Return a List of Tokens representing a sample of keys across all * ColumnFamilyStores. diff --git a/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java index 5a0a202..3aa9957 100644 --- a/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java +++ b/src/main/java/org/apache/cassandra/service/StorageServiceMBean.java @@ -808,7 +808,16 @@ public interface StorageServiceMBean extends NotificationEmitter { * The parent keyspace name * @param cfName * The ColumnFamily name where SSTables belong + * @param isLoadAndStream + * Whether or not arbitrary SSTables should be loaded (and streamed to the owning nodes) */ + public void loadNewSSTables(String ksName, String cfName, boolean isLoadAndStream); + + /** + * @deprecated use {@link #loadNewSSTables(String ksName, String cfName, boolean isLoadAndStream)} instead. + * This is kept for backward compatibility. + */ + @Deprecated public void loadNewSSTables(String ksName, String cfName); /**