You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ty...@apache.org on 2014/03/06 19:01:51 UTC
[1/4] git commit: update cobertura version patch by Ed Capriolo for
CASSANDRA-6800
Repository: cassandra
Updated Branches:
refs/heads/trunk e30d6dca5 -> 937189237
update cobertura version
patch by Ed Capriolo for CASSANDRA-6800
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c2ec94b3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c2ec94b3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c2ec94b3
Branch: refs/heads/trunk
Commit: c2ec94b3548772d55fd70736c9523cad3b68c438
Parents: 5ef53e6
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Mar 6 09:40:40 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Mar 6 09:40:46 2014 -0600
----------------------------------------------------------------------
build.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/c2ec94b3/build.xml
----------------------------------------------------------------------
diff --git a/build.xml b/build.xml
index 9972aa2..70f514c 100644
--- a/build.xml
+++ b/build.xml
@@ -92,7 +92,7 @@
<property name="test.long.timeout" value="600000" />
<!-- http://cobertura.sourceforge.net/ -->
- <property name="cobertura.version" value="1.9.4.1"/>
+ <property name="cobertura.version" value="2.0.2"/>
<property name="cobertura.build.dir" value="${build.dir}/cobertura"/>
<property name="cobertura.report.dir" value="${cobertura.build.dir}/report"/>
<property name="cobertura.classes.dir" value="${cobertura.build.dir}/classes"/>
[3/4] git commit: Auto reload GossipingPropertyFileSnitch config
Posted by ty...@apache.org.
Auto reload GossipingPropertyFileSnitch config
Patch by Danield Shelepov, reviewed by Tyler Hobbs for CASSANDRA-5897
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f67b7a47
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f67b7a47
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f67b7a47
Branch: refs/heads/trunk
Commit: f67b7a477ae08fe7c8be2bb61eeecb0a7cc55e62
Parents: 728f677
Author: Tyler Hobbs <ty...@datastax.com>
Authored: Thu Mar 6 11:22:47 2014 -0600
Committer: Tyler Hobbs <ty...@datastax.com>
Committed: Thu Mar 6 11:22:47 2014 -0600
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../org/apache/cassandra/locator/Ec2Snitch.java | 2 +-
.../locator/GossipingPropertyFileSnitch.java | 104 ++++++++++++++++---
.../cassandra/locator/PropertyFileSnitch.java | 2 +-
.../cassandra/locator/SnitchProperties.java | 10 +-
test/conf/cassandra-rackdc.properties.mod | 17 +++
.../GossipingPropertyFileSnitchTest.java | 59 +++++++++++
.../YamlFileNetworkTopologySnitchTest.java | 2 +-
8 files changed, 175 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f67b7a47/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index b933bad..af7f2fd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.1.0-beta2
+ * Auto reload GossipingPropertyFileSnitch config (CASSANDRA-5897)
* Fix overflow of memtable_total_space_in_mb (CASSANDRA-6573)
* Fix ABTC NPE (CASSANDRA-6692)
* Allow nodetool to use a file or prompt for password (CASSANDRA-6660)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f67b7a47/src/java/org/apache/cassandra/locator/Ec2Snitch.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/Ec2Snitch.java b/src/java/org/apache/cassandra/locator/Ec2Snitch.java
index 216a224..59eb27b 100644
--- a/src/java/org/apache/cassandra/locator/Ec2Snitch.java
+++ b/src/java/org/apache/cassandra/locator/Ec2Snitch.java
@@ -62,7 +62,7 @@ public class Ec2Snitch extends AbstractNetworkTopologySnitch
if (ec2region.endsWith("1"))
ec2region = az.substring(0, az.length() - 3);
- String datacenterSuffix = SnitchProperties.get("dc_suffix", "");
+ String datacenterSuffix = (new SnitchProperties()).get("dc_suffix", "");
ec2region = ec2region.concat(datacenterSuffix);
logger.info("EC2Snitch using region: {}, zone: {}.", ec2region, ec2zone);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f67b7a47/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java b/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
index 83c1efe..720e804 100644
--- a/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
+++ b/src/java/org/apache/cassandra/locator/GossipingPropertyFileSnitch.java
@@ -19,6 +19,7 @@
package org.apache.cassandra.locator;
import java.net.InetAddress;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.Map;
import org.slf4j.Logger;
@@ -29,8 +30,10 @@ import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.gms.ApplicationState;
import org.apache.cassandra.gms.EndpointState;
import org.apache.cassandra.gms.Gossiper;
-import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.ResourceWatcher;
+import org.apache.cassandra.utils.WrappedRunnable;
public class GossipingPropertyFileSnitch extends AbstractNetworkTopologySnitch// implements IEndpointStateChangeSubscriber
@@ -38,23 +41,30 @@ public class GossipingPropertyFileSnitch extends AbstractNetworkTopologySnitch//
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();
- myDC = myDC.trim();
- myRack = myRack.trim();
- preferLocal = Boolean.parseBoolean(SnitchProperties.get("prefer_local", "false"));
try
{
psnitch = new PropertyFileSnitch();
@@ -64,6 +74,23 @@ public class GossipingPropertyFileSnitch extends AbstractNetworkTopologySnitch//
{
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();
+ }
+ };
+ 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);
+ }
}
/**
@@ -125,8 +152,55 @@ public class GossipingPropertyFileSnitch extends AbstractNetworkTopologySnitch//
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
+ {
+ 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 (myDC != newDc || myRack != newRack || (preferLocal != newPreferLocal))
+ {
+ myDC = newDc;
+ myRack = newRack;
+ preferLocal = newPreferLocal;
+
+ reloadGossiperState();
+
+ if (StorageService.instance != null)
+ 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/f67b7a47/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 90dddcc..d235369 100644
--- a/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
+++ b/src/java/org/apache/cassandra/locator/PropertyFileSnitch.java
@@ -73,7 +73,7 @@ public class PropertyFileSnitch extends AbstractNetworkTopologySnitch
}
catch (ConfigurationException ex)
{
- logger.debug("{} found, but does not look like a plain file. Will not watch it for changes", SNITCH_PROPERTIES_FILENAME);
+ logger.error("{} found, but does not look like a plain file. Will not watch it for changes", SNITCH_PROPERTIES_FILENAME);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f67b7a47/src/java/org/apache/cassandra/locator/SnitchProperties.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/SnitchProperties.java b/src/java/org/apache/cassandra/locator/SnitchProperties.java
index a8b2d03..57541d4 100644
--- a/src/java/org/apache/cassandra/locator/SnitchProperties.java
+++ b/src/java/org/apache/cassandra/locator/SnitchProperties.java
@@ -28,10 +28,12 @@ public class SnitchProperties
{
private static final Logger logger = LoggerFactory.getLogger(SnitchProperties.class);
public static final String RACKDC_PROPERTY_FILENAME = "cassandra-rackdc.properties";
- private static Properties properties = new Properties();
- static
+ private Properties properties;
+
+ public SnitchProperties()
{
+ properties = new Properties();
InputStream stream = SnitchProperties.class.getClassLoader().getResourceAsStream(RACKDC_PROPERTY_FILENAME);
try
{
@@ -49,9 +51,9 @@ public class SnitchProperties
}
/**
- * Get a snitch property value or return null if not defined.
+ * Get a snitch property value or return defaultValue if not defined.
*/
- public static String get(String propertyName, String defaultValue)
+ public String get(String propertyName, String defaultValue)
{
return properties.getProperty(propertyName, defaultValue);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f67b7a47/test/conf/cassandra-rackdc.properties.mod
----------------------------------------------------------------------
diff --git a/test/conf/cassandra-rackdc.properties.mod b/test/conf/cassandra-rackdc.properties.mod
new file mode 100644
index 0000000..457ad65
--- /dev/null
+++ b/test/conf/cassandra-rackdc.properties.mod
@@ -0,0 +1,17 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+dc=DC2
+rack=RAC2
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f67b7a47/test/unit/org/apache/cassandra/locator/GossipingPropertyFileSnitchTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/locator/GossipingPropertyFileSnitchTest.java b/test/unit/org/apache/cassandra/locator/GossipingPropertyFileSnitchTest.java
new file mode 100644
index 0000000..9026ebf
--- /dev/null
+++ b/test/unit/org/apache/cassandra/locator/GossipingPropertyFileSnitchTest.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.locator;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.apache.cassandra.utils.FBUtilities;
+import org.junit.Test;
+
+/**
+ * Unit tests for {@link GossipingPropertyFileSnitch}.
+ */
+public class GossipingPropertyFileSnitchTest
+{
+ @Test
+ public void testAutoReloadConfig() throws Exception
+ {
+ String confFile = FBUtilities.resourceToFile(SnitchProperties.RACKDC_PROPERTY_FILENAME);
+
+ final GossipingPropertyFileSnitch snitch = new GossipingPropertyFileSnitch(/*refreshPeriodInSeconds*/1);
+ YamlFileNetworkTopologySnitchTest.checkEndpoint(snitch, FBUtilities.getBroadcastAddress().getHostAddress(), "DC1", "RAC1");
+
+ final Path effectiveFile = Paths.get(confFile);
+ final Path backupFile = Paths.get(confFile + ".bak");
+ final Path modifiedFile = Paths.get(confFile + ".mod");
+
+ try
+ {
+ Files.copy(effectiveFile, backupFile);
+ Files.copy(modifiedFile, effectiveFile, java.nio.file.StandardCopyOption.REPLACE_EXISTING);
+
+ Thread.sleep(1500);
+
+ YamlFileNetworkTopologySnitchTest.checkEndpoint(snitch, FBUtilities.getBroadcastAddress().getHostAddress(), "DC2", "RAC2");
+ }
+ finally
+ {
+ Files.copy(backupFile, effectiveFile, java.nio.file.StandardCopyOption.REPLACE_EXISTING);
+ Files.delete(backupFile);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/f67b7a47/test/unit/org/apache/cassandra/locator/YamlFileNetworkTopologySnitchTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/locator/YamlFileNetworkTopologySnitchTest.java b/test/unit/org/apache/cassandra/locator/YamlFileNetworkTopologySnitchTest.java
index be1c24b..af1a7e9 100644
--- a/test/unit/org/apache/cassandra/locator/YamlFileNetworkTopologySnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/YamlFileNetworkTopologySnitchTest.java
@@ -88,7 +88,7 @@ public class YamlFileNetworkTopologySnitchTest
* @param expectedRack
* expected rack
*/
- private void checkEndpoint(final AbstractNetworkTopologySnitch snitch,
+ public static void checkEndpoint(final AbstractNetworkTopologySnitch snitch,
final String endpointString, final String expectedDatacenter,
final String expectedRack)
{
[4/4] git commit: Merge branch 'cassandra-2.1' into trunk
Posted by ty...@apache.org.
Merge branch 'cassandra-2.1' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/93718923
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/93718923
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/93718923
Branch: refs/heads/trunk
Commit: 9371892374ddb8cc1d495ec4d38554603ec78a3a
Parents: e30d6dc f67b7a4
Author: Tyler Hobbs <ty...@datastax.com>
Authored: Thu Mar 6 11:55:59 2014 -0600
Committer: Tyler Hobbs <ty...@datastax.com>
Committed: Thu Mar 6 11:55:59 2014 -0600
----------------------------------------------------------------------
CHANGES.txt | 1 +
build.xml | 2 +-
.../org/apache/cassandra/locator/Ec2Snitch.java | 2 +-
.../locator/GossipingPropertyFileSnitch.java | 104 ++++++++++++++++---
.../cassandra/locator/PropertyFileSnitch.java | 2 +-
.../cassandra/locator/SnitchProperties.java | 10 +-
test/conf/cassandra-rackdc.properties.mod | 17 +++
.../GossipingPropertyFileSnitchTest.java | 59 +++++++++++
.../YamlFileNetworkTopologySnitchTest.java | 2 +-
9 files changed, 176 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/93718923/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 7cb3e97,af7f2fd..09ad14b
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,9 -1,5 +1,10 @@@
+3.0
+ * Remove CQL2 (CASSANDRA-5918)
+ * add Thrift get_multi_slice call (CASSANDRA-6757)
+
+
2.1.0-beta2
+ * Auto reload GossipingPropertyFileSnitch config (CASSANDRA-5897)
* Fix overflow of memtable_total_space_in_mb (CASSANDRA-6573)
* Fix ABTC NPE (CASSANDRA-6692)
* Allow nodetool to use a file or prompt for password (CASSANDRA-6660)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/93718923/build.xml
----------------------------------------------------------------------
[2/4] git commit: Merge branch 'cassandra-2.0' into cassandra-2.1
Posted by ty...@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/728f677b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/728f677b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/728f677b
Branch: refs/heads/trunk
Commit: 728f677b0fcc31e843c0b808f4201e32dcf2c216
Parents: a052a91 c2ec94b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Thu Mar 6 09:40:56 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Thu Mar 6 09:40:56 2014 -0600
----------------------------------------------------------------------
build.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/728f677b/build.xml
----------------------------------------------------------------------