You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2015/12/11 17:58:59 UTC
[1/2] cassandra git commit: Add property to allow listening on
broadcast_address (CASSANDRA-9748)
Repository: cassandra
Updated Branches:
refs/heads/cassandra-3.0 65885e7fc -> d55a51e95
Add property to allow listening on broadcast_address (CASSANDRA-9748)
patch by pauloricardomg; reviewed by aweisberg for CASSANDRA-9748
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/94c361d1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/94c361d1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/94c361d1
Branch: refs/heads/cassandra-3.0
Commit: 94c361d1a7a63490f1b66f5b10e02579516c5eae
Parents: f166749
Author: Paulo Motta <pa...@gmail.com>
Authored: Thu Nov 26 13:00:20 2015 -0800
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Fri Dec 11 17:56:45 2015 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
conf/cassandra.yaml | 8 ++++++++
.../org/apache/cassandra/config/Config.java | 1 +
.../cassandra/config/DatabaseDescriptor.java | 5 +++++
.../locator/ReconnectableSnitchHelper.java | 2 +-
.../apache/cassandra/net/MessagingService.java | 20 ++++++++++++++++----
.../cassandra/service/StorageService.java | 8 ++++----
.../org/apache/cassandra/utils/FBUtilities.java | 16 ++++++++++++++++
.../apache/cassandra/service/RemoveTest.java | 2 +-
9 files changed, 53 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 5da0d42..035e471 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.2.5
+ * Add property to allow listening on broadcast interface (CASSANDRA-9748)
* Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
* Better handling of SSL connection errors inter-node (CASSANDRA-10816)
* Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/conf/cassandra.yaml
----------------------------------------------------------------------
diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml
index dc4ef32..ec30488 100644
--- a/conf/cassandra.yaml
+++ b/conf/cassandra.yaml
@@ -421,6 +421,14 @@ listen_address: localhost
# Leaving this blank will set it to the same value as listen_address
# broadcast_address: 1.2.3.4
+# When using multiple physical network interfaces, set this
+# to true to listen on broadcast_address in addition to
+# the listen_address, allowing nodes to communicate in both
+# interfaces.
+# Ignore this property if the network configuration automatically
+# routes between the public and private networks such as EC2.
+# listen_on_broadcast_address: false
+
# Internode authentication backend, implementing IInternodeAuthenticator;
# used to allow/disallow connections from peer nodes.
# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/src/java/org/apache/cassandra/config/Config.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java
index a8be5f4..c8ce0d7 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -112,6 +112,7 @@ public class Config
public String listen_interface;
public Boolean listen_interface_prefer_ipv6 = false;
public String broadcast_address;
+ public Boolean listen_on_broadcast_address = false;
public String internode_authenticator;
/* intentionally left set to true, despite being set to false in stock 2.2 cassandra.yaml
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 4fcc1fe..af0595d 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -1226,6 +1226,11 @@ public class DatabaseDescriptor
return broadcastAddress;
}
+ public static Boolean shouldListenOnBroadcastAddress()
+ {
+ return conf.listen_on_broadcast_address;
+ }
+
public static IInternodeAuthenticator getInternodeAuthenticator()
{
return internodeAuthenticator;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
index 8b34fc0..3277af7 100644
--- a/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
+++ b/src/java/org/apache/cassandra/locator/ReconnectableSnitchHelper.java
@@ -63,7 +63,7 @@ public class ReconnectableSnitchHelper implements IEndpointStateChangeSubscriber
&& !MessagingService.instance().getConnectionPool(publicAddress).endPoint().equals(localAddress))
{
MessagingService.instance().getConnectionPool(publicAddress).reset(localAddress);
- logger.trace(String.format("Intiated reconnect to an Internal IP %s for the %s", localAddress, publicAddress));
+ logger.debug(String.format("Intiated reconnect to an Internal IP %s for the %s", localAddress, publicAddress));
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/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 09ee73f..61e58c2 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -447,21 +447,31 @@ public final class MessagingService implements MessagingServiceMBean
getConnectionPool(ep).reset();
}
+ public void listen()
+ {
+ callbacks.reset(); // hack to allow tests to stop/restart MS
+ listen(FBUtilities.getLocalAddress());
+ if (DatabaseDescriptor.shouldListenOnBroadcastAddress()
+ && !FBUtilities.getLocalAddress().equals(FBUtilities.getBroadcastAddress()))
+ {
+ listen(FBUtilities.getBroadcastAddress());
+ }
+ listenGate.signalAll();
+ }
+
/**
* Listen on the specified port.
*
* @param localEp InetAddress whose port to listen on.
*/
- public void listen(InetAddress localEp) throws ConfigurationException
+ private void listen(InetAddress localEp) throws ConfigurationException
{
- callbacks.reset(); // hack to allow tests to stop/restart MS
for (ServerSocket ss : getServerSockets(localEp))
{
SocketThread th = new SocketThread(ss, "ACCEPT-" + localEp);
th.start();
socketThreads.add(th);
}
- listenGate.signalAll();
}
@SuppressWarnings("resource")
@@ -524,7 +534,9 @@ public final class MessagingService implements MessagingServiceMBean
FileUtils.closeQuietly(socket);
throw new RuntimeException(e);
}
- logger.info("Starting Messaging Service on port {}", DatabaseDescriptor.getStoragePort());
+ String nic = FBUtilities.getNetworkInterface(localEp);
+ logger.info("Starting Messaging Service on {}:{}{}", localEp, DatabaseDescriptor.getStoragePort(),
+ nic == null? "" : String.format(" (%s)", nic));
ss.add(socket);
}
return ss;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/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 5a8d0c2..e8e7daf 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -509,7 +509,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
{
logger.info("Gathering node replacement information for {}", DatabaseDescriptor.getReplaceAddress());
if (!MessagingService.instance().isListening())
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ MessagingService.instance().listen();
// make magic happen
Gossiper.instance.doShadowRound();
@@ -540,7 +540,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
{
logger.debug("Starting shadow gossip round to check for endpoint collision");
if (!MessagingService.instance().isListening())
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ MessagingService.instance().listen();
Gossiper.instance.doShadowRound();
if (!Gossiper.instance.isSafeForBootstrap(FBUtilities.getBroadcastAddress()))
{
@@ -573,7 +573,7 @@ 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());
if (!MessagingService.instance().isListening())
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ MessagingService.instance().listen();
}
public synchronized void initServer() throws ConfigurationException
@@ -781,7 +781,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Schema.instance.updateVersionAndAnnounce(); // Ensure we know our own actual Schema UUID in preparation for updates
if (!MessagingService.instance().isListening())
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ MessagingService.instance().listen();
LoadBroadcaster.instance.startBroadcasting();
HintedHandOffManager.instance.start();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index a16fa13..9eda878 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -166,6 +166,22 @@ public class FBUtilities
return localAddresses;
}
+ public static String getNetworkInterface(InetAddress localAddress)
+ {
+ try {
+ for(NetworkInterface ifc : Collections.list(NetworkInterface.getNetworkInterfaces())) {
+ if(ifc.isUp()) {
+ for(InetAddress addr : Collections.list(ifc.getInetAddresses())) {
+ if (addr.equals(localAddress))
+ return ifc.getDisplayName();
+ }
+ }
+ }
+ }
+ catch (SocketException e) {}
+ return null;
+ }
+
/**
* Given two bit arrays represented as BigIntegers, containing the given
* number of significant bits, calculate a midpoint.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94c361d1/test/unit/org/apache/cassandra/service/RemoveTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/service/RemoveTest.java b/test/unit/org/apache/cassandra/service/RemoveTest.java
index 6d7cac8..9f1d6a8 100644
--- a/test/unit/org/apache/cassandra/service/RemoveTest.java
+++ b/test/unit/org/apache/cassandra/service/RemoveTest.java
@@ -78,7 +78,7 @@ public class RemoveTest
// create a ring of 5 nodes
Util.createInitialRing(ss, partitioner, endpointTokens, keyTokens, hosts, hostIds, 6);
- MessagingService.instance().listen(FBUtilities.getBroadcastAddress());
+ MessagingService.instance().listen();
Gossiper.instance.start(1);
removalhost = hosts.get(5);
hosts.remove(removalhost);
[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into
cassandra-3.0
Posted by sl...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d55a51e9
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d55a51e9
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d55a51e9
Branch: refs/heads/cassandra-3.0
Commit: d55a51e9523d3695fa43bfbe7da3b6ab0a110caf
Parents: 65885e7 94c361d
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Fri Dec 11 17:58:48 2015 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Fri Dec 11 17:58:48 2015 +0100
----------------------------------------------------------------------
CHANGES.txt | 7 +++++++
conf/cassandra.yaml | 8 ++++++++
.../org/apache/cassandra/config/Config.java | 1 +
.../cassandra/config/DatabaseDescriptor.java | 5 +++++
.../locator/ReconnectableSnitchHelper.java | 2 +-
.../apache/cassandra/net/MessagingService.java | 20 ++++++++++++++++----
.../cassandra/service/StorageService.java | 8 ++++----
.../org/apache/cassandra/utils/FBUtilities.java | 16 ++++++++++++++++
.../apache/cassandra/service/RemoveTest.java | 2 +-
9 files changed, 59 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d55a51e9/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 5932dbb,035e471..a71ecbd
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,37 -1,14 +1,44 @@@
-2.2.5
+3.0.2
++Merged from 2.2
+ * Add property to allow listening on broadcast interface (CASSANDRA-9748)
+ * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
+ * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
+ * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
+ * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
Merged from 2.1:
* Allow cancellation of index summary redistribution (CASSANDRA-8805)
- * Fix Stress profile parsing on Windows (CASSANDRA-10808)
+
-2.2.4
+3.0.1
+ * Avoid MV race during node decommission (CASSANDRA-10674)
+ * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
+ * Handle single-column deletions correction in materialized views
+ when the column is part of the view primary key (CASSANDRA-10796)
+ * Fix issue with datadir migration on upgrade (CASSANDRA-10788)
+ * Fix bug with range tombstones on reverse queries and test coverage for
+ AbstractBTreePartition (CASSANDRA-10059)
+ * Remove 64k limit on collection elements (CASSANDRA-10374)
+ * Remove unclear Indexer.indexes() method (CASSANDRA-10690)
+ * Fix NPE on stream read error (CASSANDRA-10771)
+ * Normalize cqlsh DESC output (CASSANDRA-10431)
+ * Rejects partition range deletions when columns are specified (CASSANDRA-10739)
+ * Fix error when saving cached key for old format sstable (CASSANDRA-10778)
+ * Invalidate prepared statements on DROP INDEX (CASSANDRA-10758)
+ * Fix SELECT statement with IN restrictions on partition key,
+ ORDER BY and LIMIT (CASSANDRA-10729)
+ * Improve stress performance over 1k threads (CASSANDRA-7217)
+ * Wait for migration responses to complete before bootstrapping (CASSANDRA-10731)
+ * Unable to create a function with argument of type Inet (CASSANDRA-10741)
+ * Fix backward incompatibiliy in CqlInputFormat (CASSANDRA-10717)
+ * Correctly preserve deletion info on updated rows when notifying indexers
+ of single-row deletions (CASSANDRA-10694)
+ * Notify indexers of partition delete during cleanup (CASSANDRA-10685)
+ * Keep the file open in trySkipCache (CASSANDRA-10669)
+ * Updated trigger example (CASSANDRA-10257)
+Merged from 2.2:
+ * Fix regression on split size in CqlInputFormat (CASSANDRA-10835)
+ * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
+ * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
+ * Fix IllegalArgumentException in DataOutputBuffer.reallocate for large buffers (CASSANDRA-10592)
* Show CQL help in cqlsh in web browser (CASSANDRA-7225)
* Serialize on disk the proper SSTable compression ratio (CASSANDRA-10775)
* Reject index queries while the index is building (CASSANDRA-8505)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d55a51e9/conf/cassandra.yaml
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d55a51e9/src/java/org/apache/cassandra/config/Config.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d55a51e9/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d55a51e9/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d55a51e9/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index b150f8c,e8e7daf..4e749dc
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -554,24 -573,9 +554,24 @@@ public class StorageService extends Not
Gossiper.instance.start((int) (System.currentTimeMillis() / 1000)); // needed for node-ring gathering.
Gossiper.instance.addLocalApplicationState(ApplicationState.NET_VERSION, valueFactory.networkVersion());
if (!MessagingService.instance().isListening())
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ MessagingService.instance().listen();
}
+ 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);
@@@ -792,10 -781,10 +792,10 @@@
Schema.instance.updateVersionAndAnnounce(); // Ensure we know our own actual Schema UUID in preparation for updates
if (!MessagingService.instance().isListening())
- MessagingService.instance().listen(FBUtilities.getLocalAddress());
+ MessagingService.instance().listen();
LoadBroadcaster.instance.startBroadcasting();
- HintedHandOffManager.instance.start();
+ HintsService.instance.startDispatch();
BatchlogManager.instance.start();
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d55a51e9/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------