You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2017/08/31 13:05:47 UTC
cassandra git commit: add nodetool command 'statusautocompaction'
Repository: cassandra
Updated Branches:
refs/heads/trunk adf025bd4 -> 5dc79aafc
add nodetool command 'statusautocompaction'
patch by cormoran; reviewed by jasobrown for CASSANDRA-8727
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5dc79aaf
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5dc79aaf
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5dc79aaf
Branch: refs/heads/trunk
Commit: 5dc79aafceb8dd1b7a985b262f128c59bedb5bf6
Parents: adf025b
Author: cormoran <co...@gmail.com>
Authored: Mon Aug 28 13:18:57 2017 +0900
Committer: Jason Brown <ja...@gmail.com>
Committed: Thu Aug 31 06:04:06 2017 -0700
----------------------------------------------------------------------
.../cassandra/service/StorageService.java | 8 ++
.../cassandra/service/StorageServiceMBean.java | 1 +
.../org/apache/cassandra/tools/NodeProbe.java | 5 ++
.../org/apache/cassandra/tools/NodeTool.java | 1 +
.../tools/nodetool/StatusAutoCompaction.java | 80 ++++++++++++++++++++
5 files changed, 95 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5dc79aaf/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index bab161a..3e88bb2 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -4949,6 +4949,14 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
}
}
+ public Map<String, Boolean> getAutoCompactionStatus(String ks, String... tables) throws IOException
+ {
+ Map<String, Boolean> status = new HashMap<String, Boolean>();
+ for (ColumnFamilyStore cfs : getValidColumnFamilies(true, true, ks, tables))
+ status.put(cfs.getTableName(), cfs.isAutoCompactionDisabled());
+ return status;
+ }
+
/** Returns the name of the cluster */
public String getClusterName()
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5dc79aaf/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index 46b7253..28c1b36 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -594,6 +594,7 @@ public interface StorageServiceMBean extends NotificationEmitter
void disableAutoCompaction(String ks, String ... tables) throws IOException;
void enableAutoCompaction(String ks, String ... tables) throws IOException;
+ Map<String, Boolean> getAutoCompactionStatus(String ks, String... tables) throws IOException;
public void deliverHints(String host) throws UnknownHostException;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5dc79aaf/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index 267a6d5..a0b0aec 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -722,6 +722,11 @@ public class NodeProbe implements AutoCloseable
ssProxy.enableAutoCompaction(ks, tableNames);
}
+ public Map<String, Boolean> getAutoCompactionDisabled(String ks, String ... tableNames) throws IOException
+ {
+ return ssProxy.getAutoCompactionStatus(ks, tableNames);
+ }
+
public void setIncrementalBackupsEnabled(boolean enabled)
{
ssProxy.setIncrementalBackupsEnabled(enabled);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5dc79aaf/src/java/org/apache/cassandra/tools/NodeTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeTool.java b/src/java/org/apache/cassandra/tools/NodeTool.java
index a117025..de89f61 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -122,6 +122,7 @@ public class NodeTool
StatusGossip.class,
StatusBackup.class,
StatusHandoff.class,
+ StatusAutoCompaction.class,
Stop.class,
StopDaemon.class,
Version.class,
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5dc79aaf/src/java/org/apache/cassandra/tools/nodetool/StatusAutoCompaction.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/StatusAutoCompaction.java b/src/java/org/apache/cassandra/tools/nodetool/StatusAutoCompaction.java
new file mode 100644
index 0000000..4322bb8
--- /dev/null
+++ b/src/java/org/apache/cassandra/tools/nodetool/StatusAutoCompaction.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.tools.nodetool;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import io.airlift.airline.Arguments;
+import io.airlift.airline.Command;
+import io.airlift.airline.Option;
+import org.apache.cassandra.tools.NodeProbe;
+import org.apache.cassandra.tools.NodeTool.NodeToolCmd;
+import org.apache.cassandra.tools.nodetool.formatter.TableBuilder;
+
+@Command(name = "statusautocompaction", description = "status of autocompaction of the given keyspace and table")
+public class StatusAutoCompaction extends NodeToolCmd
+{
+ @Arguments(usage = "[<keyspace> <tables>...]", description = "The keyspace followed by one or many tables")
+ private List<String> args = new ArrayList<>();
+
+ @Option(title = "show_all", name = { "-a", "--all" }, description = "Show auto compaction status for each keyspace/table")
+ private boolean showAll = false;
+
+ @Override
+ public void execute(NodeProbe probe)
+ {
+ List<String> keyspaces = parseOptionalKeyspace(args, probe);
+ String[] tableNames = parseOptionalTables(args);
+
+ boolean allDisabled = true;
+ boolean allEnabled = true;
+ TableBuilder table = new TableBuilder();
+ table.add("Keyspace", "Table", "Status");
+ try
+ {
+ for (String keyspace : keyspaces)
+ {
+ Map<String, Boolean> statuses = probe.getAutoCompactionDisabled(keyspace, tableNames);
+ for (Map.Entry<String, Boolean> status : statuses.entrySet())
+ {
+ String tableName = status.getKey();
+ boolean disabled = status.getValue();
+ allDisabled &= disabled;
+ allEnabled &= !disabled;
+ table.add(keyspace, tableName, !disabled ? "running" : "not running");
+ }
+ }
+ if (showAll)
+ table.printTo(System.out);
+ else
+ System.out.println(allEnabled ? "running" :
+ allDisabled ? "not running" : "partially running");
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException("Error occurred during status-auto-compaction", e);
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org