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 2013/09/30 20:53:57 UTC
[1/9] git commit: lock access to TM.endpointToHostIdMap patch by
Mikhail Stepura; reviewed by jbellis for CASSANDRA-6103
Updated Branches:
refs/heads/cassandra-1.2 898ce5f04 -> 672131d97
refs/heads/cassandra-2.0 705e8d5a7 -> 65b1e36c7
refs/heads/trunk ef3935741 -> 17c7e9486
lock access to TM.endpointToHostIdMap
patch by Mikhail Stepura; reviewed by jbellis for CASSANDRA-6103
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d73380e3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d73380e3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d73380e3
Branch: refs/heads/cassandra-1.2
Commit: d73380e319c663d5bff23a7730dcf97cbd323970
Parents: 898ce5f
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:49:15 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:51:55 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/locator/TokenMetadata.java | 97 ++++++++++++++++----
2 files changed, 78 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d73380e3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ca559b1..6a695e1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.11
+ * lock access to TM.endpointToHostIdMap (CASSANDRA-6103)
* Allow estimated memtable size to exceed slab allocator size (CASSANDRA-6078)
* Start MeteredFlusher earlier to prevent OOM during CL replay (CASSANDRA-6087)
* Avoid sending Truncate command to fat clients (CASSANDRA-6088)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d73380e3/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 1f6682b..7ad711f 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -221,43 +221,76 @@ public class TokenMetadata
assert hostId != null;
assert endpoint != null;
- InetAddress storedEp = endpointToHostIdMap.inverse().get(hostId);
- if (storedEp != null)
+ lock.writeLock().lock();
+ try
{
- if (!storedEp.equals(endpoint) && (FailureDetector.instance.isAlive(storedEp)))
+ InetAddress storedEp = endpointToHostIdMap.inverse().get(hostId);
+ if (storedEp != null)
{
- throw new RuntimeException(String.format("Host ID collision between active endpoint %s and %s (id=%s)",
- storedEp,
- endpoint,
- hostId));
+ if (!storedEp.equals(endpoint) && (FailureDetector.instance.isAlive(storedEp)))
+ {
+ throw new RuntimeException(String.format("Host ID collision between active endpoint %s and %s (id=%s)",
+ storedEp,
+ endpoint,
+ hostId));
+ }
}
+
+ UUID storedId = endpointToHostIdMap.get(endpoint);
+ if ((storedId != null) && (!storedId.equals(hostId)))
+ logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
+
+ endpointToHostIdMap.forcePut(endpoint, hostId);
+ }
+ finally
+ {
+ lock.writeLock().unlock();
}
- UUID storedId = endpointToHostIdMap.get(endpoint);
- if ((storedId != null) && (!storedId.equals(hostId)))
- logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
-
- endpointToHostIdMap.forcePut(endpoint, hostId);
}
/** Return the unique host ID for an end-point. */
public UUID getHostId(InetAddress endpoint)
{
- return endpointToHostIdMap.get(endpoint);
+ lock.readLock().lock();
+ try
+ {
+ return endpointToHostIdMap.get(endpoint);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** Return the end-point for a unique host ID */
public InetAddress getEndpointForHostId(UUID hostId)
{
- return endpointToHostIdMap.inverse().get(hostId);
+ lock.readLock().lock();
+ try
+ {
+ return endpointToHostIdMap.inverse().get(hostId);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** @return a copy of the endpoint-to-id map for read-only operations */
public Map<InetAddress, UUID> getEndpointToHostIdMapForReading()
{
- Map<InetAddress, UUID> readMap = new HashMap<InetAddress, UUID>();
- readMap.putAll(endpointToHostIdMap);
- return readMap;
+ lock.readLock().lock();
+ try
+ {
+ Map<InetAddress, UUID> readMap = new HashMap<InetAddress, UUID>();
+ readMap.putAll(endpointToHostIdMap);
+ return readMap;
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
@Deprecated
@@ -725,13 +758,29 @@ public class TokenMetadata
public Set<InetAddress> getAllEndpoints()
{
- return endpointToHostIdMap.keySet();
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(endpointToHostIdMap.keySet());
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** caller should not modify leavingEndpoints */
public Set<InetAddress> getLeavingEndpoints()
{
- return leavingEndpoints;
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(leavingEndpoints);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/**
@@ -740,7 +789,15 @@ public class TokenMetadata
*/
public Set<Pair<Token, InetAddress>> getMovingEndpoints()
{
- return movingEndpoints;
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(movingEndpoints);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/**
[9/9] git commit: Merge branch 'cassandra-2.0' into trunk
Posted by jb...@apache.org.
Merge branch 'cassandra-2.0' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/17c7e948
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/17c7e948
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/17c7e948
Branch: refs/heads/trunk
Commit: 17c7e9486a3608b5507cc4718e25a9fbe1b2fbaf
Parents: ef39357 65b1e36
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:53:47 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:53:47 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/locator/TokenMetadata.java | 109 ++++++++++++++-----
2 files changed, 85 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17c7e948/CHANGES.txt
----------------------------------------------------------------------
[7/9] git commit: merge from 1.2
Posted by jb...@apache.org.
merge from 1.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/65b1e36c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/65b1e36c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/65b1e36c
Branch: refs/heads/cassandra-2.0
Commit: 65b1e36c7853694275721c6bac1e705e61ee79ef
Parents: 705e8d5 672131d
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:53:43 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:53:43 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/locator/TokenMetadata.java | 109 ++++++++++++++-----
2 files changed, 85 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/65b1e36c/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 33268dd,6a695e1..465c718
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,16 -1,5 +1,17 @@@
-1.2.11
+2.0.2
+ * Track and persist sstable read activity (CASSANDRA-5515)
+ * Fixes for speculative retry (CASSANDRA-5932)
+ * Improve memory usage of metadata min/max column names (CASSANDRA-6077)
+ * Fix thrift validation refusing row markers on CQL3 tables (CASSANDRA-6081)
+ * Fix insertion of collections with CAS (CASSANDRA-6069)
+ * Correctly send metadata on SELECT COUNT (CASSANDRA-6080)
+ * Track clients' remote addresses in ClientState (CASSANDRA-6070)
+ * Create snapshot dir if it does not exist when migrating
+ leveled manifest (CASSANDRA-6093)
+ * make sequential nodetool repair the default (CASSANDRA-5950)
+ * Add more hooks for compaction strategy implementations (CASSANDRA-6111)
+Merged from 1.2:
+ * lock access to TM.endpointToHostIdMap (CASSANDRA-6103)
* Allow estimated memtable size to exceed slab allocator size (CASSANDRA-6078)
* Start MeteredFlusher earlier to prevent OOM during CL replay (CASSANDRA-6087)
* Avoid sending Truncate command to fat clients (CASSANDRA-6088)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/65b1e36c/src/java/org/apache/cassandra/locator/TokenMetadata.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/locator/TokenMetadata.java
index 2ede042,ac9a1d0..addd662
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@@ -945,11 -1006,9 +1006,9 @@@ public class TokenMetadat
/**
* @deprecated retained for benefit of old tests
*/
- public Collection<InetAddress> getWriteEndpoints(Token token, String table, Collection<InetAddress> naturalEndpoints)
+ public Collection<InetAddress> getWriteEndpoints(Token token, String keyspaceName, Collection<InetAddress> naturalEndpoints)
{
- ArrayList<InetAddress> endpoints = new ArrayList<InetAddress>();
- Iterables.addAll(endpoints, Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, keyspaceName)));
- return endpoints;
- return ImmutableList.copyOf(Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
++ return ImmutableList.copyOf(Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, keyspaceName)));
}
/** @return an endpoint to token multimap representation of tokenToEndpointMap (a copy) */
[3/9] git commit: lock access to TM.endpointToHostIdMap patch by
Mikhail Stepura; reviewed by jbellis for CASSANDRA-6103
Posted by jb...@apache.org.
lock access to TM.endpointToHostIdMap
patch by Mikhail Stepura; reviewed by jbellis for CASSANDRA-6103
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d73380e3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d73380e3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d73380e3
Branch: refs/heads/trunk
Commit: d73380e319c663d5bff23a7730dcf97cbd323970
Parents: 898ce5f
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:49:15 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:51:55 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/locator/TokenMetadata.java | 97 ++++++++++++++++----
2 files changed, 78 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d73380e3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ca559b1..6a695e1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.11
+ * lock access to TM.endpointToHostIdMap (CASSANDRA-6103)
* Allow estimated memtable size to exceed slab allocator size (CASSANDRA-6078)
* Start MeteredFlusher earlier to prevent OOM during CL replay (CASSANDRA-6087)
* Avoid sending Truncate command to fat clients (CASSANDRA-6088)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d73380e3/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 1f6682b..7ad711f 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -221,43 +221,76 @@ public class TokenMetadata
assert hostId != null;
assert endpoint != null;
- InetAddress storedEp = endpointToHostIdMap.inverse().get(hostId);
- if (storedEp != null)
+ lock.writeLock().lock();
+ try
{
- if (!storedEp.equals(endpoint) && (FailureDetector.instance.isAlive(storedEp)))
+ InetAddress storedEp = endpointToHostIdMap.inverse().get(hostId);
+ if (storedEp != null)
{
- throw new RuntimeException(String.format("Host ID collision between active endpoint %s and %s (id=%s)",
- storedEp,
- endpoint,
- hostId));
+ if (!storedEp.equals(endpoint) && (FailureDetector.instance.isAlive(storedEp)))
+ {
+ throw new RuntimeException(String.format("Host ID collision between active endpoint %s and %s (id=%s)",
+ storedEp,
+ endpoint,
+ hostId));
+ }
}
+
+ UUID storedId = endpointToHostIdMap.get(endpoint);
+ if ((storedId != null) && (!storedId.equals(hostId)))
+ logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
+
+ endpointToHostIdMap.forcePut(endpoint, hostId);
+ }
+ finally
+ {
+ lock.writeLock().unlock();
}
- UUID storedId = endpointToHostIdMap.get(endpoint);
- if ((storedId != null) && (!storedId.equals(hostId)))
- logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
-
- endpointToHostIdMap.forcePut(endpoint, hostId);
}
/** Return the unique host ID for an end-point. */
public UUID getHostId(InetAddress endpoint)
{
- return endpointToHostIdMap.get(endpoint);
+ lock.readLock().lock();
+ try
+ {
+ return endpointToHostIdMap.get(endpoint);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** Return the end-point for a unique host ID */
public InetAddress getEndpointForHostId(UUID hostId)
{
- return endpointToHostIdMap.inverse().get(hostId);
+ lock.readLock().lock();
+ try
+ {
+ return endpointToHostIdMap.inverse().get(hostId);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** @return a copy of the endpoint-to-id map for read-only operations */
public Map<InetAddress, UUID> getEndpointToHostIdMapForReading()
{
- Map<InetAddress, UUID> readMap = new HashMap<InetAddress, UUID>();
- readMap.putAll(endpointToHostIdMap);
- return readMap;
+ lock.readLock().lock();
+ try
+ {
+ Map<InetAddress, UUID> readMap = new HashMap<InetAddress, UUID>();
+ readMap.putAll(endpointToHostIdMap);
+ return readMap;
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
@Deprecated
@@ -725,13 +758,29 @@ public class TokenMetadata
public Set<InetAddress> getAllEndpoints()
{
- return endpointToHostIdMap.keySet();
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(endpointToHostIdMap.keySet());
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** caller should not modify leavingEndpoints */
public Set<InetAddress> getLeavingEndpoints()
{
- return leavingEndpoints;
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(leavingEndpoints);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/**
@@ -740,7 +789,15 @@ public class TokenMetadata
*/
public Set<Pair<Token, InetAddress>> getMovingEndpoints()
{
- return movingEndpoints;
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(movingEndpoints);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/**
[2/9] git commit: lock access to TM.endpointToHostIdMap patch by
Mikhail Stepura; reviewed by jbellis for CASSANDRA-6103
Posted by jb...@apache.org.
lock access to TM.endpointToHostIdMap
patch by Mikhail Stepura; reviewed by jbellis for CASSANDRA-6103
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d73380e3
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d73380e3
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d73380e3
Branch: refs/heads/cassandra-2.0
Commit: d73380e319c663d5bff23a7730dcf97cbd323970
Parents: 898ce5f
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:49:15 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:51:55 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/locator/TokenMetadata.java | 97 ++++++++++++++++----
2 files changed, 78 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d73380e3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index ca559b1..6a695e1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.11
+ * lock access to TM.endpointToHostIdMap (CASSANDRA-6103)
* Allow estimated memtable size to exceed slab allocator size (CASSANDRA-6078)
* Start MeteredFlusher earlier to prevent OOM during CL replay (CASSANDRA-6087)
* Avoid sending Truncate command to fat clients (CASSANDRA-6088)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/d73380e3/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 1f6682b..7ad711f 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -221,43 +221,76 @@ public class TokenMetadata
assert hostId != null;
assert endpoint != null;
- InetAddress storedEp = endpointToHostIdMap.inverse().get(hostId);
- if (storedEp != null)
+ lock.writeLock().lock();
+ try
{
- if (!storedEp.equals(endpoint) && (FailureDetector.instance.isAlive(storedEp)))
+ InetAddress storedEp = endpointToHostIdMap.inverse().get(hostId);
+ if (storedEp != null)
{
- throw new RuntimeException(String.format("Host ID collision between active endpoint %s and %s (id=%s)",
- storedEp,
- endpoint,
- hostId));
+ if (!storedEp.equals(endpoint) && (FailureDetector.instance.isAlive(storedEp)))
+ {
+ throw new RuntimeException(String.format("Host ID collision between active endpoint %s and %s (id=%s)",
+ storedEp,
+ endpoint,
+ hostId));
+ }
}
+
+ UUID storedId = endpointToHostIdMap.get(endpoint);
+ if ((storedId != null) && (!storedId.equals(hostId)))
+ logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
+
+ endpointToHostIdMap.forcePut(endpoint, hostId);
+ }
+ finally
+ {
+ lock.writeLock().unlock();
}
- UUID storedId = endpointToHostIdMap.get(endpoint);
- if ((storedId != null) && (!storedId.equals(hostId)))
- logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
-
- endpointToHostIdMap.forcePut(endpoint, hostId);
}
/** Return the unique host ID for an end-point. */
public UUID getHostId(InetAddress endpoint)
{
- return endpointToHostIdMap.get(endpoint);
+ lock.readLock().lock();
+ try
+ {
+ return endpointToHostIdMap.get(endpoint);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** Return the end-point for a unique host ID */
public InetAddress getEndpointForHostId(UUID hostId)
{
- return endpointToHostIdMap.inverse().get(hostId);
+ lock.readLock().lock();
+ try
+ {
+ return endpointToHostIdMap.inverse().get(hostId);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** @return a copy of the endpoint-to-id map for read-only operations */
public Map<InetAddress, UUID> getEndpointToHostIdMapForReading()
{
- Map<InetAddress, UUID> readMap = new HashMap<InetAddress, UUID>();
- readMap.putAll(endpointToHostIdMap);
- return readMap;
+ lock.readLock().lock();
+ try
+ {
+ Map<InetAddress, UUID> readMap = new HashMap<InetAddress, UUID>();
+ readMap.putAll(endpointToHostIdMap);
+ return readMap;
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
@Deprecated
@@ -725,13 +758,29 @@ public class TokenMetadata
public Set<InetAddress> getAllEndpoints()
{
- return endpointToHostIdMap.keySet();
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(endpointToHostIdMap.keySet());
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/** caller should not modify leavingEndpoints */
public Set<InetAddress> getLeavingEndpoints()
{
- return leavingEndpoints;
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(leavingEndpoints);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/**
@@ -740,7 +789,15 @@ public class TokenMetadata
*/
public Set<Pair<Token, InetAddress>> getMovingEndpoints()
{
- return movingEndpoints;
+ lock.readLock().lock();
+ try
+ {
+ return new HashSet<>(movingEndpoints);
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
/**
[6/9] git commit: cleanup
Posted by jb...@apache.org.
cleanup
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/672131d9
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/672131d9
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/672131d9
Branch: refs/heads/trunk
Commit: 672131d97fe31a7c724a236fc4f040d4c241769d
Parents: d73380e
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:52:09 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:52:09 2013 -0500
----------------------------------------------------------------------
.../apache/cassandra/locator/TokenMetadata.java | 22 +++++++++++---------
1 file changed, 12 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/672131d9/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 7ad711f..ac9a1d0 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -45,10 +45,14 @@ public class TokenMetadata
{
private static final Logger logger = LoggerFactory.getLogger(TokenMetadata.class);
- /* Maintains token to endpoint map of every node in the cluster. */
+ /**
+ * Maintains token to endpoint map of every node in the cluster.
+ * Each Token is associated with exactly one Address, but each Address may have
+ * multiple tokens. Hence, the BiMultiValMap collection.
+ */
private final BiMultiValMap<Token, InetAddress> tokenToEndpointMap;
- /* Maintains endpoint to host ID map of every node in the cluster */
+ /** Maintains endpoint to host ID map of every node in the cluster */
private final BiMap<InetAddress, UUID> endpointToHostIdMap;
// Prior to CASSANDRA-603, we just had <tt>Map<Range, InetAddress> pendingRanges<tt>,
@@ -235,10 +239,10 @@ public class TokenMetadata
hostId));
}
}
-
+
UUID storedId = endpointToHostIdMap.get(endpoint);
if ((storedId != null) && (!storedId.equals(hostId)))
- logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
+ logger.warn("Changing {}'s host ID from {} to {}", endpoint, storedId, hostId);
endpointToHostIdMap.forcePut(endpoint, hostId);
}
@@ -761,7 +765,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(endpointToHostIdMap.keySet());
+ return ImmutableSet.copyOf(endpointToHostIdMap.keySet());
}
finally
{
@@ -775,7 +779,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(leavingEndpoints);
+ return ImmutableSet.copyOf(leavingEndpoints);
}
finally
{
@@ -792,7 +796,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(movingEndpoints);
+ return ImmutableSet.copyOf(movingEndpoints);
}
finally
{
@@ -1004,9 +1008,7 @@ public class TokenMetadata
*/
public Collection<InetAddress> getWriteEndpoints(Token token, String table, Collection<InetAddress> naturalEndpoints)
{
- ArrayList<InetAddress> endpoints = new ArrayList<InetAddress>();
- Iterables.addAll(endpoints, Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
- return endpoints;
+ return ImmutableList.copyOf(Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
}
/** @return an endpoint to token multimap representation of tokenToEndpointMap (a copy) */
[8/9] git commit: merge from 1.2
Posted by jb...@apache.org.
merge from 1.2
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/65b1e36c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/65b1e36c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/65b1e36c
Branch: refs/heads/trunk
Commit: 65b1e36c7853694275721c6bac1e705e61ee79ef
Parents: 705e8d5 672131d
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:53:43 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:53:43 2013 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/locator/TokenMetadata.java | 109 ++++++++++++++-----
2 files changed, 85 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/65b1e36c/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 33268dd,6a695e1..465c718
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,16 -1,5 +1,17 @@@
-1.2.11
+2.0.2
+ * Track and persist sstable read activity (CASSANDRA-5515)
+ * Fixes for speculative retry (CASSANDRA-5932)
+ * Improve memory usage of metadata min/max column names (CASSANDRA-6077)
+ * Fix thrift validation refusing row markers on CQL3 tables (CASSANDRA-6081)
+ * Fix insertion of collections with CAS (CASSANDRA-6069)
+ * Correctly send metadata on SELECT COUNT (CASSANDRA-6080)
+ * Track clients' remote addresses in ClientState (CASSANDRA-6070)
+ * Create snapshot dir if it does not exist when migrating
+ leveled manifest (CASSANDRA-6093)
+ * make sequential nodetool repair the default (CASSANDRA-5950)
+ * Add more hooks for compaction strategy implementations (CASSANDRA-6111)
+Merged from 1.2:
+ * lock access to TM.endpointToHostIdMap (CASSANDRA-6103)
* Allow estimated memtable size to exceed slab allocator size (CASSANDRA-6078)
* Start MeteredFlusher earlier to prevent OOM during CL replay (CASSANDRA-6087)
* Avoid sending Truncate command to fat clients (CASSANDRA-6088)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/65b1e36c/src/java/org/apache/cassandra/locator/TokenMetadata.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/locator/TokenMetadata.java
index 2ede042,ac9a1d0..addd662
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@@ -945,11 -1006,9 +1006,9 @@@ public class TokenMetadat
/**
* @deprecated retained for benefit of old tests
*/
- public Collection<InetAddress> getWriteEndpoints(Token token, String table, Collection<InetAddress> naturalEndpoints)
+ public Collection<InetAddress> getWriteEndpoints(Token token, String keyspaceName, Collection<InetAddress> naturalEndpoints)
{
- ArrayList<InetAddress> endpoints = new ArrayList<InetAddress>();
- Iterables.addAll(endpoints, Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, keyspaceName)));
- return endpoints;
- return ImmutableList.copyOf(Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
++ return ImmutableList.copyOf(Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, keyspaceName)));
}
/** @return an endpoint to token multimap representation of tokenToEndpointMap (a copy) */
[4/9] git commit: cleanup
Posted by jb...@apache.org.
cleanup
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/672131d9
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/672131d9
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/672131d9
Branch: refs/heads/cassandra-1.2
Commit: 672131d97fe31a7c724a236fc4f040d4c241769d
Parents: d73380e
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:52:09 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:52:09 2013 -0500
----------------------------------------------------------------------
.../apache/cassandra/locator/TokenMetadata.java | 22 +++++++++++---------
1 file changed, 12 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/672131d9/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 7ad711f..ac9a1d0 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -45,10 +45,14 @@ public class TokenMetadata
{
private static final Logger logger = LoggerFactory.getLogger(TokenMetadata.class);
- /* Maintains token to endpoint map of every node in the cluster. */
+ /**
+ * Maintains token to endpoint map of every node in the cluster.
+ * Each Token is associated with exactly one Address, but each Address may have
+ * multiple tokens. Hence, the BiMultiValMap collection.
+ */
private final BiMultiValMap<Token, InetAddress> tokenToEndpointMap;
- /* Maintains endpoint to host ID map of every node in the cluster */
+ /** Maintains endpoint to host ID map of every node in the cluster */
private final BiMap<InetAddress, UUID> endpointToHostIdMap;
// Prior to CASSANDRA-603, we just had <tt>Map<Range, InetAddress> pendingRanges<tt>,
@@ -235,10 +239,10 @@ public class TokenMetadata
hostId));
}
}
-
+
UUID storedId = endpointToHostIdMap.get(endpoint);
if ((storedId != null) && (!storedId.equals(hostId)))
- logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
+ logger.warn("Changing {}'s host ID from {} to {}", endpoint, storedId, hostId);
endpointToHostIdMap.forcePut(endpoint, hostId);
}
@@ -761,7 +765,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(endpointToHostIdMap.keySet());
+ return ImmutableSet.copyOf(endpointToHostIdMap.keySet());
}
finally
{
@@ -775,7 +779,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(leavingEndpoints);
+ return ImmutableSet.copyOf(leavingEndpoints);
}
finally
{
@@ -792,7 +796,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(movingEndpoints);
+ return ImmutableSet.copyOf(movingEndpoints);
}
finally
{
@@ -1004,9 +1008,7 @@ public class TokenMetadata
*/
public Collection<InetAddress> getWriteEndpoints(Token token, String table, Collection<InetAddress> naturalEndpoints)
{
- ArrayList<InetAddress> endpoints = new ArrayList<InetAddress>();
- Iterables.addAll(endpoints, Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
- return endpoints;
+ return ImmutableList.copyOf(Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
}
/** @return an endpoint to token multimap representation of tokenToEndpointMap (a copy) */
[5/9] git commit: cleanup
Posted by jb...@apache.org.
cleanup
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/672131d9
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/672131d9
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/672131d9
Branch: refs/heads/cassandra-2.0
Commit: 672131d97fe31a7c724a236fc4f040d4c241769d
Parents: d73380e
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Sep 30 13:52:09 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Mon Sep 30 13:52:09 2013 -0500
----------------------------------------------------------------------
.../apache/cassandra/locator/TokenMetadata.java | 22 +++++++++++---------
1 file changed, 12 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/672131d9/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 7ad711f..ac9a1d0 100644
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@ -45,10 +45,14 @@ public class TokenMetadata
{
private static final Logger logger = LoggerFactory.getLogger(TokenMetadata.class);
- /* Maintains token to endpoint map of every node in the cluster. */
+ /**
+ * Maintains token to endpoint map of every node in the cluster.
+ * Each Token is associated with exactly one Address, but each Address may have
+ * multiple tokens. Hence, the BiMultiValMap collection.
+ */
private final BiMultiValMap<Token, InetAddress> tokenToEndpointMap;
- /* Maintains endpoint to host ID map of every node in the cluster */
+ /** Maintains endpoint to host ID map of every node in the cluster */
private final BiMap<InetAddress, UUID> endpointToHostIdMap;
// Prior to CASSANDRA-603, we just had <tt>Map<Range, InetAddress> pendingRanges<tt>,
@@ -235,10 +239,10 @@ public class TokenMetadata
hostId));
}
}
-
+
UUID storedId = endpointToHostIdMap.get(endpoint);
if ((storedId != null) && (!storedId.equals(hostId)))
- logger.warn("Changing {}'s host ID from {} to {}", new Object[] {endpoint, storedId, hostId});
+ logger.warn("Changing {}'s host ID from {} to {}", endpoint, storedId, hostId);
endpointToHostIdMap.forcePut(endpoint, hostId);
}
@@ -761,7 +765,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(endpointToHostIdMap.keySet());
+ return ImmutableSet.copyOf(endpointToHostIdMap.keySet());
}
finally
{
@@ -775,7 +779,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(leavingEndpoints);
+ return ImmutableSet.copyOf(leavingEndpoints);
}
finally
{
@@ -792,7 +796,7 @@ public class TokenMetadata
lock.readLock().lock();
try
{
- return new HashSet<>(movingEndpoints);
+ return ImmutableSet.copyOf(movingEndpoints);
}
finally
{
@@ -1004,9 +1008,7 @@ public class TokenMetadata
*/
public Collection<InetAddress> getWriteEndpoints(Token token, String table, Collection<InetAddress> naturalEndpoints)
{
- ArrayList<InetAddress> endpoints = new ArrayList<InetAddress>();
- Iterables.addAll(endpoints, Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
- return endpoints;
+ return ImmutableList.copyOf(Iterables.concat(naturalEndpoints, pendingEndpointsFor(token, table)));
}
/** @return an endpoint to token multimap representation of tokenToEndpointMap (a copy) */