You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/02/03 18:11:05 UTC

svn commit: r1066874 - in /cassandra/trunk: ./ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/java/org/apache/cassandra/cli/ src/java/org/apache/cassandra/net/ src/java/org/apache/cassandra/service/ src/java/org/apache/cassandra/tools/

Author: jbellis
Date: Thu Feb  3 17:11:04 2011
New Revision: 1066874

URL: http://svn.apache.org/viewvc?rev=1066874&view=rev
Log:
merge from 0.7

Modified:
    cassandra/trunk/   (props changed)
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java   (props changed)
    cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java   (props changed)
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java
    cassandra/trunk/src/java/org/apache/cassandra/net/ResponseVerbHandler.java
    cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
    cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb  3 17:11:04 2011
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1064713
-/cassandra/branches/cassandra-0.7:1026516-1066480
+/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1064713,1066843
+/cassandra/branches/cassandra-0.7:1026516-1066873
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3:774578-796573

Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1066874&r1=1066873&r2=1066874&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Feb  3 17:11:04 2011
@@ -28,7 +28,7 @@
  * fix CFMetaData.apply to only compare objects of the same class 
    (CASSANDRA-1962)
  * allow specifying specific SSTables to compact from JMX (CASSANDRA-1963)
- * fix race condition in MessagingService.targets (CASSANDRA-1959, 2094)
+ * fix race condition in MessagingService.targets (CASSANDRA-1959, 2094, 2081)
  * zero-copy reads (CASSANDRA-1714)
  * refuse to open sstables from a future version (CASSANDRA-1935)
  * fix copy bounds for word Text in wordcount demo (CASSANDRA-1993)

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb  3 17:11:04 2011
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1064713
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1066480
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1064713,1066843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1066873
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb  3 17:11:04 2011
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1064713
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1066480
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1064713,1066843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1066873
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb  3 17:11:04 2011
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1064713
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1066480
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1064713,1066843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1066873
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb  3 17:11:04 2011
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1064713
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1066480
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1064713,1066843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1066873
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573

Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Feb  3 17:11:04 2011
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1064713
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1066480
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1064713,1066843
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1066873
 /cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
 /cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
 /incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198

Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java?rev=1066874&r1=1066873&r2=1066874&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliUserHelp.java Thu Feb  3 17:11:04 2011
@@ -133,15 +133,20 @@ public class CliUserHelp {
                 state.out.println("valid attributes are:");
                 state.out.println("    replication_factor: to how many nodes should entries to this keyspace be");
                 state.out.println("                        replicated. Valid entries are integers greater than 0.");
+                state.out.println("                        Applies to Simple and OldNT strategies but NOT NTS.");
                 state.out.println("    placement_strategy: the fully qualified class used to place replicas in");
                 state.out.println("                        this keyspace. Valid values are");
                 state.out.println("                        org.apache.cassandra.locator.SimpleStrategy,");
                 state.out.println("                        org.apache.cassandra.locator.NetworkTopologyStrategy,");
                 state.out.println("                        and org.apache.cassandra.locator.OldNetworkTopologyStrategy");
-                state.out.println("      strategy_options: additional options for placement_strategy.\n");
-                state.out.println("example:");
-                state.out.println("create keyspace foo with replication_factor = 3 and ");
-                state.out.println("        placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy'");
+                state.out.println("      strategy_options: additional options for placement_strategy.");
+                state.out.println("                        Applies only to NetworkTopologyStrategy.");
+                state.out.println("\nexamples:");
+                state.out.println("create keyspace foo with");
+                state.out.println("        placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy';");
+                state.out.println("        and replication_factor = 3;");
+                state.out.println("create keyspace foo with");
+                state.out.println("        placement_strategy = 'org.apache.cassandra.locator.NetworkTopologyStrategy';");
                 state.out.println("        and strategy_options=[{DC1:2, DC2:2}];");
                 break;
 
@@ -153,16 +158,21 @@ public class CliUserHelp {
                 state.out.println("valid attributes are:");
                 state.out.println("    replication_factor: to how many nodes should entries to this keyspace be");
                 state.out.println("                        replicated. Valid entries are integers greater than 0.");
+                state.out.println("                        Applies to Simple and OldNT strategies but NOT NTS.");
                 state.out.println("    placement_strategy: the fully qualified class used to place replicas in");
                 state.out.println("                        this keyspace. Valid values are");
                 state.out.println("                        org.apache.cassandra.locator.SimpleStrategy,");
                 state.out.println("                        org.apache.cassandra.locator.NetworkTopologyStrategy,");
                 state.out.println("                        and org.apache.cassandra.locator.OldNetworkTopologyStrategy");
-                state.out.println("      strategy_options: additional options for placement_strategy.\n");
-                state.out.println("example:");
-                state.out.println("update keyspace foo with replication_factor = 2 and ");
-                state.out.println("        placement_strategy = 'org.apache.cassandra.locator.LocalStrategy'");
-                state.out.println("        and strategy_options=[{DC1:1, DC2:4, DC3:2}];");
+                state.out.println("      strategy_options: additional options for placement_strategy.");
+                state.out.println("                        Applies only to NetworkTopologyStrategy.");
+                state.out.println("\nexamples:");
+                state.out.println("update keyspace foo with");
+                state.out.println("        placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy';");
+                state.out.println("        and replication_factor = 3;");
+                state.out.println("update keyspace foo with");
+                state.out.println("        placement_strategy = 'org.apache.cassandra.locator.NetworkTopologyStrategy';");
+                state.out.println("        and strategy_options=[{DC1:2, DC2:2}];");
                 break;
 
             case CliParser.NODE_ADD_COLUMN_FAMILY:

Modified: cassandra/trunk/src/java/org/apache/cassandra/net/ResponseVerbHandler.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/ResponseVerbHandler.java?rev=1066874&r1=1066873&r2=1066874&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/net/ResponseVerbHandler.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/net/ResponseVerbHandler.java Thu Feb  3 17:11:04 2011
@@ -37,7 +37,10 @@ public class ResponseVerbHandler impleme
         double age = System.currentTimeMillis() - MessagingService.instance().getRegisteredCallbackAge(messageId);
         Pair<InetAddress, IMessageCallback> pair = MessagingService.instance().removeRegisteredCallback(messageId);
         if (pair == null)
+        {
+            logger_.debug("Callback already removed for {}", messageId);
             return;
+        }
 
         IMessageCallback cb = pair.right;
         MessagingService.instance().maybeAddLatency(cb, message.getFrom(), age);

Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1066874&r1=1066873&r2=1066874&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java Thu Feb  3 17:11:04 2011
@@ -729,7 +729,6 @@ public class StorageProxy implements Sto
                 {
                     DatabaseDescriptor.getEndpointSnitch().sortByProximity(FBUtilities.getLocalAddress(), liveEndpoints);
                     RangeSliceCommand c2 = new RangeSliceCommand(command.keyspace, command.column_family, command.super_column, command.predicate, range, command.max_keys);
-                    Message message = c2.getMessage();
 
                     // collect replies and resolve according to consistency level
                     RangeSliceResponseResolver resolver = new RangeSliceResponseResolver(command.keyspace, liveEndpoints);
@@ -738,6 +737,7 @@ public class StorageProxy implements Sto
                     // TODO bail early if live endpoints can't satisfy requested consistency level
                     for (InetAddress endpoint : liveEndpoints)
                     {
+                        Message message = c2.getMessage();
                         MessagingService.instance().sendRR(message, endpoint, handler);
                         if (logger.isDebugEnabled())
                             logger.debug("reading " + c2 + " from " + message.getMessageId() + "@" + endpoint);

Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java?rev=1066874&r1=1066873&r2=1066874&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeCmd.java Thu Feb  3 17:11:04 2011
@@ -84,43 +84,54 @@ public class NodeCmd {
     private static void printUsage()
     {
         HelpFormatter hf = new HelpFormatter();
-        String header = "\nAvailable commands:\n"
-                         // No args
-                         + "ring\n"
-                         + "info\n"
-                         + "cfstats\n"
-                         + "clearsnapshot\n"
-                         + "version\n"
-                         + "tpstats\n"
-                         + "drain\n"
-                         + "decommission\n"
-                         + "loadbalance\n"
-                         + "compactionstats\n"
-                         + "disablegossip\n"
-                         + "enablegossip\n"
-
-                         // One arg
-                         + "snapshot [snapshotname]\n"
-                         + "netstats [host]\n"
-                         + "move <new token>\n"
-                         + "removetoken status|force|<token>\n"
-
-                         // Two args
-                         + "flush [keyspace] [cfnames]\n"
-                         + "repair [keyspace] [cfnames]\n"
-                         + "cleanup [keyspace] [cfnames]\n"
-                         + "compact [keyspace] [cfnames]\n"
-                         + "invalidatekeycache [keyspace] [cfnames]\n"
-                         + "invalidaterowcache [keyspace] [cfnames]\n"
-                         + "getcompactionthreshold <keyspace> <cfname>\n"
-                         + "cfhistograms <keyspace> <cfname>\n"
-
-                         // Four args
-                         + "setcachecapacity <keyspace> <cfname> <keycachecapacity> <rowcachecapacity>\n"
-                         + "setcompactionthreshold <keyspace> <cfname> <minthreshold> <maxthreshold>\n";
+        StringBuilder header = new StringBuilder();
+        header.append("\nAvailable commands:\n");
+        // No args
+        addCmdHelp(header, "ring", "Print informations on the token ring");
+        addCmdHelp(header, "info", "Print node informations (uptime, load, ...)");
+        addCmdHelp(header, "cfstats", "Print statistics on column families");
+        addCmdHelp(header, "clearsnapshot", "Remove all existing snapshots");
+        addCmdHelp(header, "version", "Print cassandra version");
+        addCmdHelp(header, "tpstats", "Print usage statistics of thread pools");
+        addCmdHelp(header, "drain", "Drain the node (stop accepting writes and flush all column families)");
+        addCmdHelp(header, "decommission", "Decommission the node");
+        addCmdHelp(header, "loadbalance", "Loadbalance the node");
+        addCmdHelp(header, "compactionstats", "Print statistics on compactions");
+        addCmdHelp(header, "disablegossip", "Disable gossip (effectively marking the node dead)");
+        addCmdHelp(header, "enablegossip", "Reenable gossip");
+
+        // One arg
+        addCmdHelp(header, "snapshot [snapshotname]", "Take a snapshot using optional name snapshotname");
+        addCmdHelp(header, "netstats [host]", "Print network information on provided host (connecting node by default)");
+        addCmdHelp(header, "move <new token>", "Move node on the token ring to a new token");
+        addCmdHelp(header, "removetoken status|force|<token>", "Show status of current token removal, force completion of pending removal or remove providen token");
+
+        // Two args
+        addCmdHelp(header, "flush [keyspace] [cfnames]", "Flush one or more column family");
+        addCmdHelp(header, "repair [keyspace] [cfnames]", "Repair one or more column family");
+        addCmdHelp(header, "cleanup [keyspace] [cfnames]", "Run cleanup on one or more column family");
+        addCmdHelp(header, "compact [keyspace] [cfnames]", "Force a (major) compaction on one or more column family");
+        addCmdHelp(header, "invalidatekeycache [keyspace] [cfnames]", "Invalidate the key cache of one or more column family");
+        addCmdHelp(header, "invalidaterowcache [keyspace] [cfnames]", "Invalidate the key cache of one or more column family");
+        addCmdHelp(header, "getcompactionthreshold <keyspace> <cfname>", "Print min and max compaction thresholds for a given column family");
+        addCmdHelp(header, "cfhistograms <keyspace> <cfname>", "Print statistic histograms for a given column family");
+
+        // Four args
+        addCmdHelp(header, "setcachecapacity <keyspace> <cfname> <keycachecapacity> <rowcachecapacity>", "Set the key and row cache capacities of a given column family");
+        addCmdHelp(header, "setcompactionthreshold <keyspace> <cfname> <minthreshold> <maxthreshold>", "Set the min and max compaction thresholds for a given column family");
 
         String usage = String.format("java %s --host <arg> <command>%n", NodeCmd.class.getName());
-        hf.printHelp(usage, "", options, header);
+        hf.printHelp(usage, "", options, "");
+        System.out.println(header.toString());
+    }
+
+    private static void addCmdHelp(StringBuilder sb, String cmd, String description)
+    {
+        sb.append("  ").append(cmd);
+        // Ghetto indentation (trying, but not too hard, to not look too bad)
+        if (cmd.length() <= 20)
+            for (int i = cmd.length(); i < 22; ++i) sb.append(" ");
+        sb.append(" - ").append(description).append("\n");
     }
     
     /**