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