You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2015/05/15 11:55:00 UTC

cassandra git commit: Populate TokenMetadata early during startup.

Repository: cassandra
Updated Branches:
  refs/heads/trunk 311cb7783 -> 5012463b6


Populate TokenMetadata early during startup.

Patch by marcuse; reviewed by thobbs for CASSANDRA-9317


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5012463b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5012463b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5012463b

Branch: refs/heads/trunk
Commit: 5012463b60e31c78a5a2af5e0ca78b64e4dc38a6
Parents: 311cb77
Author: Marcus Eriksson <ma...@apache.org>
Authored: Thu May 7 11:09:15 2015 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Fri May 15 11:53:45 2015 +0200

----------------------------------------------------------------------
 CHANGES.txt                                         |  1 +
 .../apache/cassandra/service/CassandraDaemon.java   |  1 +
 .../apache/cassandra/service/StorageService.java    | 16 +++++++++++++++-
 3 files changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5012463b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 0efba98..bcae76f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2
+ * Populate TokenMetadata early during startup (CASSANDRA-9317)
  * Make Functions.declared thread-safe
  * Add client warnings to native protocol v4 (CASSANDRA-8930)
  * Allow roles cache to be invalidated (CASSANDRA-8967)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5012463b/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index c1b4ad6..914600e 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -173,6 +173,7 @@ public class CassandraDaemon
             }
         });
 
+        StorageService.instance.populateTokenMetadata();
         // load schema from disk
         Schema.instance.loadFromDisk();
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5012463b/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 c0ea872..4573449 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -565,6 +565,21 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
             MessagingService.instance().listen(FBUtilities.getLocalAddress());
     }
 
+    public void populateTokenMetadata()
+    {
+        if (Boolean.parseBoolean(System.getProperty("cassandra.load_ring_state", "true")))
+        {
+            logger.info("Populating token metadata from system tables");
+            Multimap<InetAddress, Token> loadedTokens = SystemKeyspace.loadTokens();
+            if (!shouldBootstrap()) // if we have not completed bootstrapping, we should not add ourselves as a normal token
+                loadedTokens.putAll(FBUtilities.getBroadcastAddress(), SystemKeyspace.getSavedTokens());
+            for (InetAddress ep : loadedTokens.keySet())
+                tokenMetadata.updateNormalTokens(loadedTokens.get(ep), ep);
+
+            logger.info("Token metadata: {}", tokenMetadata);
+        }
+    }
+
     public synchronized void initServer() throws ConfigurationException
     {
         initServer(RING_DELAY);
@@ -605,7 +620,6 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
                 }
                 else
                 {
-                    tokenMetadata.updateNormalTokens(loadedTokens.get(ep), ep);
                     if (loadedHostIds.containsKey(ep))
                         tokenMetadata.updateHostId(loadedHostIds.get(ep), ep);
                     Gossiper.instance.addSavedEndpoint(ep);