You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2015/09/18 13:40:35 UTC
[2/3] cassandra git commit: Follow-up to CASSANDRA-10238
Follow-up to CASSANDRA-10238
call invalidateCacheRings when topology is updated
patch by Stefania Alborghetti; reviewed by Branimir Lambov for
CASSANDRA-10238
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c4de7527
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c4de7527
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c4de7527
Branch: refs/heads/cassandra-2.1
Commit: c4de752758c3cf7f5de5a92e4ede30e430a36255
Parents: 6f8e07a
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Fri Sep 18 08:57:53 2015 +0800
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Fri Sep 18 12:33:51 2015 +0100
----------------------------------------------------------------------
.../apache/cassandra/locator/PropertyFileSnitch.java | 14 +++++++++-----
.../org/apache/cassandra/locator/TokenMetadata.java | 2 ++
.../locator/YamlFileNetworkTopologySnitch.java | 10 ++++++----
.../org/apache/cassandra/service/StorageService.java | 3 ++-
4 files changed, 19 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c4de7527/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java b/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
index 745eeb8..5b89df1 100644
--- a/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
+++ b/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
@@ -59,7 +59,7 @@ public class PropertyFileSnitch extends AbstractNetworkTopologySnitch
public PropertyFileSnitch() throws ConfigurationException
{
- reloadConfiguration();
+ reloadConfiguration(false);
try
{
@@ -68,8 +68,7 @@ public class PropertyFileSnitch extends AbstractNetworkTopologySnitch
{
protected void runMayThrow() throws ConfigurationException
{
- reloadConfiguration();
- StorageService.instance.updateTopology();
+ reloadConfiguration(true);
}
};
ResourceWatcher.watch(SNITCH_PROPERTIES_FILENAME, runnable, 60 * 1000);
@@ -131,7 +130,7 @@ public class PropertyFileSnitch extends AbstractNetworkTopologySnitch
return info[1];
}
- public void reloadConfiguration() throws ConfigurationException
+ public void reloadConfiguration(boolean isUpdate) throws ConfigurationException
{
HashMap<InetAddress, String[]> reloadedMap = new HashMap<InetAddress, String[]>();
@@ -198,7 +197,12 @@ public class PropertyFileSnitch extends AbstractNetworkTopologySnitch
endpointMap = reloadedMap;
if (StorageService.instance != null) // null check tolerates circular dependency; see CASSANDRA-4145
- StorageService.instance.getTokenMetadata().invalidateCachedRings();
+ {
+ if (isUpdate)
+ StorageService.instance.updateTopology();
+ else
+ StorageService.instance.getTokenMetadata().invalidateCachedRings();
+ }
if (gossipStarted)
StorageService.instance.gossipSnitchInfo();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c4de7527/src/java/org/apache/cassandra/locator/TokenMetadata.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/TokenMetadata.java b/src/java/org/apache/cassandra/locator/TokenMetadata.java
index b1b25e8..25d60f0 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -413,6 +413,7 @@ public class TokenMetadata
{
logger.info("Updating topology for {}", endpoint);
topology.updateEndpoint(endpoint);
+ invalidateCachedRings();
}
finally
{
@@ -431,6 +432,7 @@ public class TokenMetadata
{
logger.info("Updating topology for all endpoints that have changed");
topology.updateEndpoints();
+ invalidateCachedRings();
}
finally
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c4de7527/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java b/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
index e6691c4..b75fc28 100644
--- a/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
+++ b/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
@@ -103,7 +103,7 @@ public class YamlFileNetworkTopologySnitch
throws ConfigurationException
{
this.topologyConfigFilename = topologyConfigFilename;
- loadTopologyConfiguration();
+ loadTopologyConfiguration(false);
try
{
@@ -119,8 +119,7 @@ public class YamlFileNetworkTopologySnitch
*/
protected void runMayThrow() throws ConfigurationException
{
- loadTopologyConfiguration();
- StorageService.instance.updateTopology();
+ loadTopologyConfiguration(true);
}
};
ResourceWatcher.watch(topologyConfigFilename, runnable,
@@ -202,7 +201,7 @@ public class YamlFileNetworkTopologySnitch
* @throws ConfigurationException
* on failure
*/
- private synchronized void loadTopologyConfiguration()
+ private synchronized void loadTopologyConfiguration(boolean isUpdate)
throws ConfigurationException
{
logger.debug("Loading topology configuration from {}",
@@ -354,6 +353,9 @@ public class YamlFileNetworkTopologySnitch
{
StorageService.instance.gossipSnitchInfo();
}
+
+ if (isUpdate && StorageService.instance != null)
+ StorageService.instance.updateTopology();
}
/**
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c4de7527/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 c5f159e..9327b67 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1411,7 +1411,6 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
public void updateTopology()
{
getTokenMetadata().updateTopology();
-
}
private void updatePeerInfo(InetAddress endpoint)
@@ -3670,6 +3669,8 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
if (oldSnitch instanceof DynamicEndpointSnitch)
((DynamicEndpointSnitch)oldSnitch).unregisterMBean();
+
+ updateTopology();
}
/**