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 2012/02/21 20:27:55 UTC

git commit: Update gossip with schema version when merging from remote. Patch by brandonwilliams, reviewed by xedin for CASSANDRA-3931

Updated Branches:
  refs/heads/cassandra-1.1 83cfa9dd1 -> 527d590d4


Update gossip with schema version when merging from remote.
Patch by brandonwilliams, reviewed by xedin for CASSANDRA-3931


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

Branch: refs/heads/cassandra-1.1
Commit: 527d590d435073ebefab7369f77e7d3a04d5b651
Parents: 83cfa9d
Author: Brandon Williams <br...@apache.org>
Authored: Tue Feb 21 12:30:06 2012 -0600
Committer: Brandon Williams <br...@apache.org>
Committed: Tue Feb 21 13:14:39 2012 -0600

----------------------------------------------------------------------
 src/java/org/apache/cassandra/config/Schema.java   |    9 +++++++++
 src/java/org/apache/cassandra/db/DefsTable.java    |    2 +-
 .../apache/cassandra/service/MigrationManager.java |    1 +
 .../apache/cassandra/service/StorageService.java   |    6 +++---
 4 files changed, 14 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/527d590d/src/java/org/apache/cassandra/config/Schema.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Schema.java b/src/java/org/apache/cassandra/config/Schema.java
index e1047c2..89c5d1e 100644
--- a/src/java/org/apache/cassandra/config/Schema.java
+++ b/src/java/org/apache/cassandra/config/Schema.java
@@ -28,6 +28,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
+import org.apache.cassandra.service.MigrationManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -478,4 +479,12 @@ public class Schema
             versionLock.writeLock().unlock();
         }
     }
+    /*
+     * Like updateVersion, but also announces via gossip
+     */
+    public void updateVersionAndAnnounce()
+    {
+        updateVersion();
+        MigrationManager.passiveAnnounce(version);
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/527d590d/src/java/org/apache/cassandra/db/DefsTable.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DefsTable.java b/src/java/org/apache/cassandra/db/DefsTable.java
index ca62a46..142e032 100644
--- a/src/java/org/apache/cassandra/db/DefsTable.java
+++ b/src/java/org/apache/cassandra/db/DefsTable.java
@@ -234,7 +234,7 @@ public class DefsTable
         if (!StorageService.instance.isClientMode())
             MigrationHelper.flushSchemaCFs();
 
-        Schema.instance.updateVersion();
+        Schema.instance.updateVersionAndAnnounce();
 
         Set<String> keyspacesToDrop = mergeKeyspaces(oldKeyspaces, SystemTable.getSchema(SystemTable.SCHEMA_KEYSPACES_CF));
         mergeColumnFamilies(oldColumnFamilies, SystemTable.getSchema(SystemTable.SCHEMA_COLUMNFAMILIES_CF));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/527d590d/src/java/org/apache/cassandra/service/MigrationManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/MigrationManager.java b/src/java/org/apache/cassandra/service/MigrationManager.java
index 0d8df1d..d303d40 100644
--- a/src/java/org/apache/cassandra/service/MigrationManager.java
+++ b/src/java/org/apache/cassandra/service/MigrationManager.java
@@ -174,6 +174,7 @@ public class MigrationManager implements IEndpointStateChangeSubscriber
      */
     public static void passiveAnnounce(UUID version)
     {
+        assert Gossiper.instance.isEnabled();
         Gossiper.instance.addLocalApplicationState(ApplicationState.SCHEMA, StorageService.instance.valueFactory.migration(version));
         logger.debug("Gossiping my schema version " + version);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/527d590d/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 3635801..7a7bc7c 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -398,8 +398,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
             throw new IOError(ex);
         }
 
-        Schema.instance.updateVersion();
-        MigrationManager.passiveAnnounce(Schema.instance.getVersion());
+        Schema.instance.updateVersionAndAnnounce();
     }
 
     public synchronized void initServer() throws IOException, ConfigurationException
@@ -508,7 +507,6 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         logger_.info("Starting up server gossip");
         joined = true;
 
-        Schema.instance.updateVersion();
 
         // have to start the gossip service before we can see any info on other nodes.  this is necessary
         // for bootstrap to get the load info it needs.
@@ -516,6 +514,8 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         Gossiper.instance.register(this);
         Gossiper.instance.register(migrationManager);
         Gossiper.instance.start(SystemTable.incrementAndGetGeneration()); // needed for node-ring gathering.
+        // gossip schema version when gossiper is running
+        Schema.instance.updateVersionAndAnnounce();
         // add rpc listening info
         Gossiper.instance.addLocalApplicationState(ApplicationState.RPC_ADDRESS, valueFactory.rpcaddress(DatabaseDescriptor.getRpcAddress()));
         if (null != DatabaseDescriptor.getReplaceToken())