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/04/24 17:26:37 UTC
[03/10] git commit: Don't shut MessagingService down when replacing a
node.
Don't shut MessagingService down when replacing a node.
Patch by brandonwilliams, reviewed by Benedict for CASSANDRA-6476
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9359b7a3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9359b7a3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9359b7a3
Branch: refs/heads/cassandra-2.1
Commit: 9359b7a318884c9d3a052946d50711ce9f8b51e2
Parents: 2890cc5
Author: Brandon Williams <br...@apache.org>
Authored: Thu Apr 24 10:21:45 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Thu Apr 24 10:21:45 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/net/MessagingService.java | 5 +++++
.../org/apache/cassandra/service/StorageService.java | 11 ++++++-----
3 files changed, 12 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9359b7a3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 74ddcfd..69e9d37 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -10,6 +10,7 @@
* Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
* Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
* Ensure that batchlog and hint timeouts do not produce hints (CASSANDRA-7058)
+ * Don't shut MessagingService down when replacing a node (CASSANDRA-6476)
1.2.16
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9359b7a3/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index 3f90d7f..5e4a117 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -471,6 +471,11 @@ public final class MessagingService implements MessagingServiceMBean
}
}
+ public boolean isListening()
+ {
+ return listenGate.isSignaled();
+ }
+
public void destroyConnectionPool(InetAddress to)
{
OutboundTcpConnectionPool cp = connectionManagers.get(to);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9359b7a3/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 1e7bed4..3b2d945 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -390,7 +390,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
public synchronized Collection<Token> prepareReplacementInfo() throws ConfigurationException
{
logger.info("Gathering node replacement information for {}", DatabaseDescriptor.getReplaceAddress());
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ if (!MessagingService.instance().isListening())
+ MessagingService.instance().listen(FBUtilities.getLocalAddress());
// make magic happen
Gossiper.instance.doShadowRound();
@@ -407,7 +408,6 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Collection<Token> tokens = TokenSerializer.deserialize(getPartitioner(), new DataInputStream(new ByteArrayInputStream(getApplicationStateValue(DatabaseDescriptor.getReplaceAddress(), ApplicationState.TOKENS))));
SystemTable.setLocalHostId(hostId); // use the replacee's host Id as our own so we receive hints, etc
- MessagingService.instance().shutdown();
Gossiper.instance.resetEndpointStateMap(); // clean up since we have what we need
return tokens;
}
@@ -435,7 +435,6 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
break outer;
}
}
-
// sleep until any schema migrations have finished
while (!MigrationManager.isReadyForBootstrap())
{
@@ -464,7 +463,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Gossiper.instance.start((int) (System.currentTimeMillis() / 1000)); // needed for node-ring gathering.
Gossiper.instance.addLocalApplicationState(ApplicationState.NET_VERSION, valueFactory.networkVersion());
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ if (!MessagingService.instance().isListening())
+ MessagingService.instance().listen(FBUtilities.getLocalAddress());
try
{
Thread.sleep(ringDelay);
@@ -631,7 +631,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Schema.instance.updateVersionAndAnnounce(); // Ensure we know our own actual Schema UUID in preparation for updates
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ if (!MessagingService.instance().isListening())
+ MessagingService.instance().listen(FBUtilities.getLocalAddress());
LoadBroadcaster.instance.startBroadcasting();
HintedHandOffManager.instance.start();