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:44:29 UTC
[1/4] cassandra git commit: Follow-up to CASSANDRA-10238
Repository: cassandra
Updated Branches:
refs/heads/cassandra-3.0 b99c86315 -> 3355caf15
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-3.0
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();
}
/**
[3/4] cassandra git commit: Merge branch 'cassandra-2.1' into
cassandra-2.2
Posted by al...@apache.org.
Merge branch 'cassandra-2.1' into cassandra-2.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/32457e7d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/32457e7d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/32457e7d
Branch: refs/heads/cassandra-3.0
Commit: 32457e7dff55e35c29b517b8f9cc523ed71eae36
Parents: 1de63e9 a2f0da0
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Fri Sep 18 12:42:51 2015 +0100
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Fri Sep 18 12:42:51 2015 +0100
----------------------------------------------------------------------
.../locator/GossipingPropertyFileSnitch.java | 14 +++++++++-----
.../apache/cassandra/locator/PropertyFileSnitch.java | 14 +++++++++-----
.../org/apache/cassandra/locator/TokenMetadata.java | 2 ++
.../org/apache/cassandra/service/StorageService.java | 3 ++-
4 files changed, 22 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/32457e7d/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/32457e7d/src/java/org/apache/cassandra/locator/TokenMetadata.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/32457e7d/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
[2/4] cassandra git commit: Merge branch 'cassandra-2.0' into
cassandra-2.1
Posted by al...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a2f0da07
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a2f0da07
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a2f0da07
Branch: refs/heads/cassandra-3.0
Commit: a2f0da07315a13cd24a6f253b63c4bed6bfe6ed3
Parents: 98c4a7c c4de752
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Fri Sep 18 12:40:25 2015 +0100
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Fri Sep 18 12:40:25 2015 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../locator/GossipingPropertyFileSnitch.java | 14 +++++++++-----
.../apache/cassandra/locator/PropertyFileSnitch.java | 14 +++++++++-----
.../org/apache/cassandra/locator/TokenMetadata.java | 2 ++
.../locator/YamlFileNetworkTopologySnitch.java | 10 ++++++----
.../org/apache/cassandra/service/StorageService.java | 3 ++-
6 files changed, 29 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2f0da07/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 166106d,658c19f..f629050
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,50 -1,8 +1,51 @@@
-2.0.17
+2.1.10
+ * Prevent ALTER TYPE from creating circular references (CASSANDRA-10339)
+ * Fix cache handling of 2i and base tables (CASSANDRA-10155, 10359)
+ * Fix NPE in nodetool compactionhistory (CASSANDRA-9758)
+ * (Pig) support BulkOutputFormat as a URL parameter (CASSANDRA-7410)
+ * BATCH statement is broken in cqlsh (CASSANDRA-10272)
+ * Added configurable warning threshold for GC duration (CASSANDRA-8907)
+ * (cqlsh) Make cqlsh PEP8 compliant (CASSANDRA-10066)
+ * (cqlsh) Fix error when starting cqlsh with --debug (CASSANDRA-10282)
+ * Scrub, Cleanup and Upgrade do not unmark compacting until all operations
+ have completed, regardless of the occurence of exceptions (CASSANDRA-10274)
+ * Fix handling of streaming EOF (CASSANDRA-10206)
+ * Only check KeyCache when it is enabled
+ * Change streaming_socket_timeout_in_ms default to 1 hour (CASSANDRA-8611)
+ * (cqlsh) update list of CQL keywords (CASSANDRA-9232)
+Merged from 2.0:
+ * Fix rare race where older gossip states can be shadowed (CASSANDRA-10366)
* Fix consolidating racks violating the RF contract (CASSANDRA-10238)
* Disallow decommission when node is in drained state (CASSANDRA-8741)
- * Backport CASSANDRA-8013 to 2.0 (CASSANDRA-10144)
+
+
+2.1.9
+ * Avoid race condition during read repair (CASSANDRA-9460)
+ * (cqlsh) default load-from-file encoding to utf-8 (CASSANDRA-9898)
+ * Avoid returning Permission.NONE when failing to query users table (CASSANDRA-10168)
+ * (cqlsh) Allow encoding to be set through command line (CASSANDRA-10004)
+ * Add new JMX methods to change local compaction strategy (CASSANDRA-9965)
+ * Write hints for paxos commits (CASSANDRA-7342)
+ * (cqlsh) Fix timestamps before 1970 on Windows, always
+ use UTC for timestamp display (CASSANDRA-10000)
+ * (cqlsh) Avoid overwriting new config file with old config
+ when both exist (CASSANDRA-9777)
+ * Release snapshot selfRef when doing snapshot repair (CASSANDRA-9998)
+ * Cannot replace token does not exist - DN node removed as Fat Client (CASSANDRA-9871)
+ * Fix handling of enable/disable autocompaction (CASSANDRA-9899)
+ * Commit log segment recycling is disabled by default (CASSANDRA-9896)
+ * Add consistency level to tracing ouput (CASSANDRA-9827)
+ * Fix MarshalException when upgrading superColumn family (CASSANDRA-9582)
+ * Fix broken logging for "empty" flushes in Memtable (CASSANDRA-9837)
+ * Handle corrupt files on startup (CASSANDRA-9686)
+ * Fix clientutil jar and tests (CASSANDRA-9760)
+ * (cqlsh) Allow the SSL protocol version to be specified through the
+ config file or environment variables (CASSANDRA-9544)
+ * Remove repair snapshot leftover on startup (CASSANDRA-7357)
+ * Use random nodes for batch log when only 2 racks (CASSANDRA-8735)
+ * Ensure atomicity inside thrift and stream session (CASSANDRA-7757)
+ * Fix nodetool info error when the node is not joined (CASSANDRA-9031)
+Merged from 2.0:
* Make getFullyExpiredSSTables less expensive (CASSANDRA-9882)
* Add tool to find why expired sstables are not getting dropped (CASSANDRA-10015)
* Remove erroneous pending HH tasks from tpstats/jmx (CASSANDRA-9129)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2f0da07/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
index da43600,dd1637d..f3f38a0
--- a/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
+++ b/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
@@@ -41,30 -38,23 +41,30 @@@ public class GossipingPropertyFileSnitc
private static final Logger logger = LoggerFactory.getLogger(GossipingPropertyFileSnitch.class);
private PropertyFileSnitch psnitch;
- private String myDC;
- private String myRack;
+
+ private volatile String myDC;
+ private volatile String myRack;
+ private volatile boolean preferLocal;
+ private AtomicReference<ReconnectableSnitchHelper> snitchHelperReference;
+ private volatile boolean gossipStarted;
+
private Map<InetAddress, Map<String, String>> savedEndpoints;
- private String DEFAULT_DC = "UNKNOWN_DC";
- private String DEFAULT_RACK = "UNKNOWN_RACK";
- private final boolean preferLocal;
+ private static final String DEFAULT_DC = "UNKNOWN_DC";
+ private static final String DEFAULT_RACK = "UNKNOWN_RACK";
+ private static final int DEFAULT_REFRESH_PERIOD_IN_SECONDS = 60;
+
public GossipingPropertyFileSnitch() throws ConfigurationException
{
- myDC = SnitchProperties.get("dc", null);
- myRack = SnitchProperties.get("rack", null);
- if (myDC == null || myRack == null)
- throw new ConfigurationException("DC or rack not found in snitch properties, check your configuration in: " + SnitchProperties.RACKDC_PROPERTY_FILENAME);
+ this(DEFAULT_REFRESH_PERIOD_IN_SECONDS);
+ }
+
+ public GossipingPropertyFileSnitch(int refreshPeriodInSeconds) throws ConfigurationException
+ {
+ snitchHelperReference = new AtomicReference<ReconnectableSnitchHelper>();
+
- reloadConfiguration();
++ reloadConfiguration(false);
- myDC = myDC.trim();
- myRack = myRack.trim();
- preferLocal = Boolean.parseBoolean(SnitchProperties.get("prefer_local", "false"));
try
{
psnitch = new PropertyFileSnitch();
@@@ -72,25 -62,7 +72,24 @@@
}
catch (ConfigurationException e)
{
- logger.info("Unable to load " + PropertyFileSnitch.SNITCH_PROPERTIES_FILENAME + "; compatibility mode disabled");
+ logger.info("Unable to load {}; compatibility mode disabled", PropertyFileSnitch.SNITCH_PROPERTIES_FILENAME);
+ }
+
+ try
+ {
+ FBUtilities.resourceToFile(SnitchProperties.RACKDC_PROPERTY_FILENAME);
+ Runnable runnable = new WrappedRunnable()
+ {
+ protected void runMayThrow() throws ConfigurationException
+ {
- reloadConfiguration();
- StorageService.instance.updateTopology(FBUtilities.getBroadcastAddress());
++ reloadConfiguration(true);
+ }
+ };
+ ResourceWatcher.watch(SnitchProperties.RACKDC_PROPERTY_FILENAME, runnable, refreshPeriodInSeconds * 1000);
+ }
+ catch (ConfigurationException ex)
+ {
+ logger.error("{} found, but does not look like a plain file. Will not watch it for changes", SnitchProperties.RACKDC_PROPERTY_FILENAME);
}
}
@@@ -153,55 -125,8 +152,60 @@@
public void gossiperStarting()
{
super.gossiperStarting();
+
Gossiper.instance.addLocalApplicationState(ApplicationState.INTERNAL_IP,
- StorageService.instance.valueFactory.internalIP(FBUtilities.getLocalAddress().getHostAddress()));
- Gossiper.instance.register(new ReconnectableSnitchHelper(this, myDC, preferLocal));
+ StorageService.instance.valueFactory.internalIP(FBUtilities.getLocalAddress().getHostAddress()));
+
+ reloadGossiperState();
+
+ gossipStarted = true;
+ }
+
- private void reloadConfiguration() throws ConfigurationException
++ private void reloadConfiguration(boolean isUpdate) throws ConfigurationException
+ {
+ final SnitchProperties properties = new SnitchProperties();
+
+ String newDc = properties.get("dc", null);
+ String newRack = properties.get("rack", null);
+ if (newDc == null || newRack == null)
+ throw new ConfigurationException("DC or rack not found in snitch properties, check your configuration in: " + SnitchProperties.RACKDC_PROPERTY_FILENAME);
+
+ newDc = newDc.trim();
+ newRack = newRack.trim();
+ final boolean newPreferLocal = Boolean.parseBoolean(properties.get("prefer_local", "false"));
+
+ if (!newDc.equals(myDC) || !newRack.equals(myRack) || (preferLocal != newPreferLocal))
+ {
+ myDC = newDc;
+ myRack = newRack;
+ preferLocal = newPreferLocal;
+
+ reloadGossiperState();
+
+ if (StorageService.instance != null)
- StorageService.instance.getTokenMetadata().invalidateCachedRings();
++ {
++ if (isUpdate)
++ StorageService.instance.updateTopology(FBUtilities.getBroadcastAddress());
++ else
++ StorageService.instance.getTokenMetadata().invalidateCachedRings();
++ }
+
+ if (gossipStarted)
+ StorageService.instance.gossipSnitchInfo();
+ }
+ }
+
+ private void reloadGossiperState()
+ {
+ if (Gossiper.instance != null)
+ {
+ ReconnectableSnitchHelper pendingHelper = new ReconnectableSnitchHelper(this, myDC, preferLocal);
+ Gossiper.instance.register(pendingHelper);
+
+ pendingHelper = snitchHelperReference.getAndSet(pendingHelper);
+ if (pendingHelper != null)
+ Gossiper.instance.unregister(pendingHelper);
+ }
+ // else this will eventually rerun at gossiperStarting()
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2f0da07/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2f0da07/src/java/org/apache/cassandra/locator/TokenMetadata.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2f0da07/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
index 57fc1a3,b75fc28..4139662
--- a/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
+++ b/src/java/org/apache/cassandra/locator/YamlFileNetworkTopologySnitch.java
@@@ -102,9 -102,8 +102,9 @@@ public class YamlFileNetworkTopologySni
YamlFileNetworkTopologySnitch(final String topologyConfigFilename)
throws ConfigurationException
{
+ logger.warn("YamlFileNetworkTopologySnitch is deprecated; switch to GossipingPropertyFileSnitch instead");
this.topologyConfigFilename = topologyConfigFilename;
- loadTopologyConfiguration();
+ loadTopologyConfiguration(false);
try
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a2f0da07/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
[4/4] cassandra git commit: Merge branch 'cassandra-2.2' into
cassandra-3.0
Posted by al...@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/3355caf1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3355caf1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3355caf1
Branch: refs/heads/cassandra-3.0
Commit: 3355caf15388b8e964948d5dcdc26babaf4e3eb2
Parents: b99c863 32457e7
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Fri Sep 18 12:43:16 2015 +0100
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Fri Sep 18 12:43:16 2015 +0100
----------------------------------------------------------------------
.../locator/GossipingPropertyFileSnitch.java | 14 +++++++++-----
.../apache/cassandra/locator/PropertyFileSnitch.java | 14 +++++++++-----
.../org/apache/cassandra/locator/TokenMetadata.java | 2 ++
.../org/apache/cassandra/service/StorageService.java | 3 ++-
4 files changed, 22 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3355caf1/src/java/org/apache/cassandra/locator/TokenMetadata.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3355caf1/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------