You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2019/06/03 15:05:05 UTC

[cassandra] 01/01: Merge branch 'cassandra-3.0' into cassandra-3.11

This is an automated email from the ASF dual-hosted git repository.

samt pushed a commit to branch cassandra-3.11
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 8db0d84439c3209bc0da0c9a0b9730fb8b26a328
Merge: 60bdfb1 e4b5d98
Author: Sam Tunnicliffe <sa...@beobal.com>
AuthorDate: Mon Jun 3 15:59:51 2019 +0100

    Merge branch 'cassandra-3.0' into cassandra-3.11

 CHANGES.txt                                        |   1 +
 .../apache/cassandra/concurrent/SEPExecutor.java   |  10 +-
 .../org/apache/cassandra/concurrent/SEPWorker.java |  33 ++---
 .../cassandra/concurrent/SharedExecutorPool.java   |   8 +-
 .../apache/cassandra/concurrent/StageManager.java  |   2 +-
 .../org/apache/cassandra/net/MessagingService.java |  10 ++
 .../apache/cassandra/service/StorageService.java   | 165 ++++++++++++---------
 .../org/apache/cassandra/utils/ExpiringMap.java    |   5 +
 .../org/apache/cassandra/distributed/Cluster.java  |  18 ++-
 .../cassandra/distributed/UpgradeableCluster.java  |  12 +-
 .../apache/cassandra/distributed/api/Feature.java  |  24 +++
 .../cassandra/distributed/api/IInstance.java       |   5 +-
 .../distributed/impl/AbstractCluster.java          |  58 ++++++--
 .../impl/DelegatingInvokableInstance.java          |   6 +-
 .../cassandra/distributed/impl/Instance.java       |  46 ++++--
 .../distributed/impl/InstanceClassLoader.java      |   2 +-
 .../distributed/test/DistributedTestBase.java      |   1 +
 .../cassandra/distributed/test/GossipTest.java     | 113 ++++++++++++++
 .../cassandra/concurrent/SEPExecutorTest.java      |   2 +-
 .../org/apache/cassandra/service/MoveTest.java     |  11 +-
 20 files changed, 394 insertions(+), 138 deletions(-)

diff --cc CHANGES.txt
index 59c89b7,36eb9c2..ff985bd
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
 -3.0.19
 +3.11.5
 + * Fix cassandra-env.sh to use $CASSANDRA_CONF to find cassandra-jaas.config (CASSANDRA-14305)
 + * Fixed nodetool cfstats printing index name twice (CASSANDRA-14903)
 + * Add flag to disable SASI indexes, and warnings on creation (CASSANDRA-14866)
 +Merged from 3.0:
+  * Update token metadata when handling MOVING/REMOVING_TOKEN events (CASSANDRA-15120)
   * Add ability to customize cassandra log directory using $CASSANDRA_LOG_DIR (CASSANDRA-15090)
   * Skip cells with illegal column names when reading legacy sstables (CASSANDRA-15086)
   * Fix assorted gossip races and add related runtime checks (CASSANDRA-15059)
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index e64cbaa,4769b22..c340db6
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -764,15 -715,11 +764,16 @@@ public class StorageService extends Not
  
      private boolean shouldBootstrap()
      {
 -        return DatabaseDescriptor.isAutoBootstrap() && !SystemKeyspace.bootstrapComplete() && !DatabaseDescriptor.getSeeds().contains(FBUtilities.getBroadcastAddress());
 +        return DatabaseDescriptor.isAutoBootstrap() && !SystemKeyspace.bootstrapComplete() && !isSeed();
 +    }
 +
 +    public static boolean isSeed()
 +    {
 +        return DatabaseDescriptor.getSeeds().contains(FBUtilities.getBroadcastAddress());
      }
  
-     private void prepareToJoin() throws ConfigurationException
+     @VisibleForTesting
+     public void prepareToJoin() throws ConfigurationException
      {
          if (!joined)
          {
@@@ -852,31 -788,9 +853,32 @@@
          }
      }
  
 +    public void waitForSchema(int delay)
 +    {
 +        // first sleep the delay to make sure we see all our peers
 +        for (int i = 0; i < delay; i += 1000)
 +        {
 +            // if we see schema, we can proceed to the next check directly
 +            if (!Schema.instance.getVersion().equals(SchemaConstants.emptyVersion))
 +            {
 +                logger.debug("got schema: {}", Schema.instance.getVersion());
 +                break;
 +            }
 +            Uninterruptibles.sleepUninterruptibly(1, TimeUnit.SECONDS);
 +        }
 +        // if our schema hasn't matched yet, wait until it has
 +        // we do this by waiting for all in-flight migration requests and responses to complete
 +        // (post CASSANDRA-1391 we don't expect this to be necessary very often, but it doesn't hurt to be careful)
 +        if (!MigrationManager.isReadyForBootstrap())
 +        {
 +            setMode(Mode.JOINING, "waiting for schema information to complete", true);
 +            MigrationManager.waitUntilReadyForBootstrap();
 +        }
 +    }
 +
-     private void joinTokenRing(int delay) throws ConfigurationException
-     {
+     @VisibleForTesting
+     public void joinTokenRing(int delay) throws ConfigurationException
 -    {
++{
          joined = true;
  
          // We bootstrap if we haven't successfully bootstrapped before, as long as we are not a seed.
diff --cc test/distributed/org/apache/cassandra/distributed/impl/Instance.java
index 382388b,1b385fb..f209d53
--- a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java
@@@ -99,6 -99,10 +100,10 @@@ public class Instance extends IsolatedE
          this.config = config;
          InstanceIDDefiner.setInstanceId(config.num());
          FBUtilities.setBroadcastInetAddress(config.broadcastAddressAndPort().address);
+         acceptsOnInstance((IInstanceConfig override) -> {
+             Config.setOverrideLoadConfig(() -> loadConfig(override));
 -            DatabaseDescriptor.setDaemonInitialized();
++            DatabaseDescriptor.daemonInitialization();
+         }).accept(config);
      }
  
      public IInstanceConfig config()
@@@ -288,8 -294,17 +295,17 @@@
                      throw new RuntimeException(e);
                  }
  
-                 initializeRing(cluster);
-                 registerMockMessaging(cluster);
+                 // TODO: support each separately
+                 if (with.contains(Feature.GOSSIP) || with.contains(Feature.NETWORK))
+                 {
+                     StorageService.instance.prepareToJoin();
 -                    StorageService.instance.joinTokenRing(1000);
++                    StorageService.instance.joinTokenRing(5000);
+                 }
+                 else
+                 {
+                     initializeRing(cluster);
+                     registerMockMessaging(cluster);
+                 }
  
                  SystemKeyspace.finishStartup();
  


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org