Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3FC0210E71 for ; Thu, 6 Feb 2014 19:13:45 +0000 (UTC) Received: (qmail 91657 invoked by uid 500); 6 Feb 2014 19:13:43 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 91604 invoked by uid 500); 6 Feb 2014 19:13:42 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 91593 invoked by uid 99); 6 Feb 2014 19:13:42 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Feb 2014 19:13:42 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id EE5C28A38C4; Thu, 6 Feb 2014 19:13:41 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: brandonwilliams@apache.org To: commits@cassandra.apache.org Date: Thu, 06 Feb 2014 19:13:41 -0000 Message-Id: <5ac20fea71e14b138294601cb33da1e0@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/3] git commit: Add nodetool taketoken to relocate vnodes. Patch by brandonwilliams reviewed by jbellis for CASSANDRA-4445 Updated Branches: refs/heads/cassandra-2.0 21036468c -> 5f64af63a refs/heads/trunk ad8cea4ea -> ac666706d Add nodetool taketoken to relocate vnodes. Patch by brandonwilliams reviewed by jbellis for CASSANDRA-4445 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5f64af63 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5f64af63 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5f64af63 Branch: refs/heads/cassandra-2.0 Commit: 5f64af63ae063c055c214d8925098f34f4111474 Parents: 2103646 Author: Brandon Williams Authored: Thu Feb 6 13:00:24 2014 -0600 Committer: Brandon Williams Committed: Thu Feb 6 13:00:24 2014 -0600 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/service/StorageService.java | 3 +++ src/java/org/apache/cassandra/tools/NodeCmd.java | 6 ++++++ src/java/org/apache/cassandra/tools/NodeProbe.java | 5 +++++ src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml | 3 +++ 5 files changed, 18 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f64af63/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index ceb25c3..6e3c2c2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.0.6 + * Add nodetool taketoken to relocate vnodes (CASSANDRA-4445) * Fix upgradesstables NPE for non-CF-based indexes (CASSANDRA-6645) * Improve nodetool cfhistograms formatting (CASSANDRA-6360) * Expose bulk loading progress over JMX (CASSANDRA-4757) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f64af63/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 26846e7..e181c44 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -3098,6 +3098,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE for (String srcT : srcTokens) { getPartitioner().getTokenFactory().validate(srcT); + Token token = getPartitioner().getTokenFactory().fromString(srcT); + if (tokenMetadata.getTokens(tokenMetadata.getEndpoint(token)).size() < 2) + throw new IOException("Cannot relocate " + srcT + "; source node would have no tokens left"); tokens.add(getPartitioner().getTokenFactory().fromString(srcT)); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f64af63/src/java/org/apache/cassandra/tools/NodeCmd.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tools/NodeCmd.java b/src/java/org/apache/cassandra/tools/NodeCmd.java index fd7b69b..f3cd563 100644 --- a/src/java/org/apache/cassandra/tools/NodeCmd.java +++ b/src/java/org/apache/cassandra/tools/NodeCmd.java @@ -169,6 +169,7 @@ public class NodeCmd STATUSTHRIFT, STOP, STOPDAEMON, + TAKETOKEN, TPSTATS, TRUNCATEHINTS, UPGRADESSTABLES, @@ -1315,6 +1316,11 @@ public class NodeCmd probe.setTraceProbability(Double.parseDouble(arguments[0])); break; + case TAKETOKEN: + if (arguments.length < 1) { badUse("Must supply at least one token to take"); } + probe.takeTokens(arguments); + break; + case REBUILD : if (arguments.length > 1) { badUse("Too many arguments."); } probe.rebuild(arguments.length == 1 ? arguments[0] : null); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f64af63/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 0fbb12a..ffd6203 100644 --- a/src/java/org/apache/cassandra/tools/NodeProbe.java +++ b/src/java/org/apache/cassandra/tools/NodeProbe.java @@ -471,6 +471,11 @@ public class NodeProbe ssProxy.move(newToken); } + public void takeTokens(String[] tokens) throws IOException + { + ssProxy.relocate(Arrays.asList(tokens)); + } + public void removeNode(String token) { ssProxy.removeNode(token); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f64af63/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml ---------------------------------------------------------------------- diff --git a/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml b/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml index b28e300..8eacf2f 100644 --- a/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml +++ b/src/resources/org/apache/cassandra/tools/NodeToolHelp.yaml @@ -115,6 +115,9 @@ commands: - name: move help: | Move node on the token ring to a new token. (for negative tokens, use \\ to escape, Example: move \\-123) + - name: taketoken + help: | + Move the token(s) from the existing owner(s) to this node. For vnodes only. Use \\ to escape negative tokens. - name: removenode status|force| help: | Show status of current node removal, force completion of pending removal or remove provided ID