You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/03/14 05:25:55 UTC
[11/14] git commit: EC2 snitch incorrectly reports regions patch by
Vijay; reviewed by Brandon Williams for CASSANDRA-4026
EC2 snitch incorrectly reports regions
patch by Vijay; reviewed by Brandon Williams for CASSANDRA-4026
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/34060fc7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/34060fc7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/34060fc7
Branch: refs/heads/cassandra-1.1
Commit: 34060fc77a77846b60b146fc32af9dd58a21b545
Parents: d096471
Author: Vijay Parthasarathy <vi...@gmail.com>
Authored: Mon Mar 12 12:00:06 2012 -0700
Committer: Vijay Parthasarathy <vi...@gmail.com>
Committed: Mon Mar 12 12:00:06 2012 -0700
----------------------------------------------------------------------
.../org/apache/cassandra/locator/Ec2Snitch.java | 9 +++++++--
.../apache/cassandra/locator/EC2SnitchTest.java | 14 +++++++++++++-
2 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/34060fc7/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 3648143..139c305 100644
--- a/src/java/org/apache/cassandra/locator/Ec2Snitch.java
+++ b/src/java/org/apache/cassandra/locator/Ec2Snitch.java
@@ -51,10 +51,15 @@ public class Ec2Snitch extends AbstractNetworkTopologySnitch
public Ec2Snitch() throws IOException, ConfigurationException
{
+ String az = awsApiCall(ZONE_NAME_QUERY_URL);
// Split "us-east-1a" or "asia-1a" into "us-east"/"1a" and "asia"/"1a".
- String[] splits = awsApiCall(ZONE_NAME_QUERY_URL).split("-");
+ String[] splits = az.split("-");
ec2zone = splits[splits.length - 1];
- ec2region = splits.length < 3 ? splits[0] : splits[0] + "-" + splits[1];
+
+ // hack for CASSANDRA-4026
+ ec2region = az.substring(0, az.length() - 1);
+ if (ec2region.endsWith("1"))
+ ec2region = az.substring(0, az.length() - 3);
logger.info("EC2Snitch using region: " + ec2region + ", zone: " + ec2zone + ".");
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/34060fc7/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java b/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
index fad5e9e..9df9543 100644
--- a/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/EC2SnitchTest.java
@@ -36,6 +36,7 @@ import org.junit.Test;
public class EC2SnitchTest
{
+ private static String az;
private class TestEC2Snitch extends Ec2Snitch
{
@@ -47,13 +48,14 @@ public class EC2SnitchTest
@Override
String awsApiCall(String url) throws IOException, ConfigurationException
{
- return "us-east-1d";
+ return az;
}
}
@Test
public void testRac() throws IOException, ConfigurationException
{
+ az = "us-east-1d";
Ec2Snitch snitch = new TestEC2Snitch();
InetAddress local = InetAddress.getByName("127.0.0.1");
InetAddress nonlocal = InetAddress.getByName("127.0.0.7");
@@ -69,4 +71,14 @@ public class EC2SnitchTest
assertEquals("us-east", snitch.getDatacenter(local));
assertEquals("1d", snitch.getRack(local));
}
+
+ @Test
+ public void testNewRegions() throws IOException, ConfigurationException
+ {
+ az = "us-east-2d";
+ Ec2Snitch snitch = new TestEC2Snitch();
+ InetAddress local = InetAddress.getByName("127.0.0.1");
+ assertEquals("us-east-2", snitch.getDatacenter(local));
+ assertEquals("2d", snitch.getRack(local));
+ }
}