You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2014/05/06 23:17:11 UTC

[03/13] git commit: Update peer information when a node jumps to normal.

Update peer information when a node jumps to normal.

Patch by brandonwilliams, reviewed by Richard Low for CASSANDRA-7122


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

Branch: refs/heads/cassandra-2.0
Commit: f4460a55b85759d2a631a2d931f10106e1748770
Parents: 64394b2
Author: Brandon Williams <br...@apache.org>
Authored: Tue May 6 16:10:10 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Tue May 6 16:10:10 2014 -0500

----------------------------------------------------------------------
 .../cassandra/service/StorageService.java       | 30 ++++++++++++++++++++
 1 file changed, 30 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f4460a55/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 bfca642..ed6d031 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1383,6 +1383,35 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
         }
     }
 
+    private void updatePeerInfo(InetAddress endpoint)
+    {
+        EndpointState epState = Gossiper.instance.getEndpointStateForEndpoint(endpoint);
+        for (Map.Entry<ApplicationState, VersionedValue> entry : epState.getApplicationStateMap().entrySet())
+        {
+            switch (entry.getKey())
+            {
+                case RELEASE_VERSION:
+                    SystemTable.updatePeerInfo(endpoint, "release_version", quote(entry.getValue().value));
+                    break;
+                case DC:
+                    SystemTable.updatePeerInfo(endpoint, "data_center", quote(entry.getValue().value));
+                    break;
+                case RACK:
+                    SystemTable.updatePeerInfo(endpoint, "rack", quote(entry.getValue().value));
+                    break;
+                case RPC_ADDRESS:
+                    SystemTable.updatePeerInfo(endpoint, "rpc_address", quote(entry.getValue().value));
+                    break;
+                case SCHEMA:
+                    SystemTable.updatePeerInfo(endpoint, "schema_version", entry.getValue().value);
+                    break;
+                case HOST_ID:
+                    SystemTable.updatePeerInfo(endpoint, "host_id", entry.getValue().value);
+                    break;
+            }
+        }
+    }
+
     private String quote(String value)
     {
         return "'" + value + "'";
@@ -1484,6 +1513,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
         if (tokenMetadata.isMember(endpoint))
             logger.info("Node " + endpoint + " state jump to normal");
 
+        updatePeerInfo(endpoint);
         // Order Matters, TM.updateHostID() should be called before TM.updateNormalToken(), (see CASSANDRA-4300).
         if (Gossiper.instance.usesHostId(endpoint))
         {