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 2014/08/12 23:31:32 UTC
[01/15] git commit: Clone token map outside of hot gossip loops patch
by rbranson; reviewed by jbellis for CASSANDRA-7758
Repository: cassandra
Updated Branches:
refs/heads/cassandra-1.2 b55f38be3 -> 2738e8678
refs/heads/cassandra-2.0 0edd5ee98 -> 7d169211e
refs/heads/cassandra-2.1 d9b463ef5 -> 25982d12c
refs/heads/cassandra-2.1.0 2db047b09 -> 81f8e3705
refs/heads/trunk d2bed56b0 -> 59600625f
Clone token map outside of hot gossip loops
patch by rbranson; reviewed by jbellis for CASSANDRA-7758
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2738e867
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2738e867
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2738e867
Branch: refs/heads/cassandra-1.2
Commit: 2738e86783490a6bb83273281e8c4c4dcb873a3d
Parents: b55f38b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:23:43 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:23:43 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2c95a52..5dd3ad2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.19
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
index 1c0d977..d8b7586 100644
--- a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
+++ b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
@@ -144,9 +144,10 @@ public class PendingRangeCalculatorService extends PendingRangeCalculatorService
// for each of those ranges, find what new nodes will be responsible for the range when
// all leaving nodes are gone.
+ TokenMetadata metadata = tm.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : affectedRanges)
{
- Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, tm.cloneOnlyTokenMap()));
+ Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, metadata));
Set<InetAddress> newEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, allLeftMetadata));
pendingRanges.putAll(range, Sets.difference(newEndpoints, currentEndpoints));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/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 047e8d6..563b259 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1940,8 +1940,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[10/15] git commit: merge from 2.0
Posted by jb...@apache.org.
merge from 2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/81f8e370
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/81f8e370
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/81f8e370
Branch: refs/heads/trunk
Commit: 81f8e370556f42b5f2608f5efbf8bccbb16c9a0c
Parents: 2db047b 7d16921
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:26:23 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:26:23 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++++
.../cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index be91bbc,e659891..57b0183
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,16 -1,5 +1,17 @@@
-2.0.10
- * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+2.1.0-rc6
+ * Fix Thrift range filtering without 2ary index lookups (CASSANDRA-7741)
+ * Add tracing entries about concurrent range requests (CASSANDRA-7599)
+ * (cqlsh) Fix DESCRIBE for NTS keyspaces (CASSANDRA-7729)
+ * Remove netty buffer ref-counting (CASSANDRA-7735)
+ * Pass mutated cf to index updater for use by PRSI (CASSANDRA-7742)
+ * Include stress yaml example in release and deb (CASSANDRA-7717)
+ * workaround for netty issue causing corrupted data off the wire (CASSANDRA-7695)
+ * cqlsh DESC CLUSTER fails retrieving ring information (CASSANDRA-7687)
+ * Fix binding null values inside UDT (CASSANDRA-7685)
+ * Fix UDT field selection with empty fields (CASSANDRA-7670)
+ * Bogus deserialization of static cells from sstable (CASSANDRA-7684)
+Merged from 2.0:
++ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
* Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
* Give CRR a default input_cql Statement (CASSANDRA-7226)
@@@ -138,46 -42,28 +139,53 @@@ Merged from 2.0
* Backport CASSANDRA-6747 (CASSANDRA-7560)
* Track max/min timestamps for range tombstones (CASSANDRA-7647)
* Fix NPE when listing saved caches dir (CASSANDRA-7632)
+ Merged from 1.2:
- * Clone token map outside of hot gossip loops (CASSANDRA-7758)
+ * Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
+ * Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
+ * Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
+ * SimpleSeedProvider no longer caches seeds forever (CASSANDRA-7663)
+ * Set correct stream ID on responses when non-Exception Throwables
+ are thrown while handling native protocol messages (CASSANDRA-7470)
-2.0.9
- * Fix CC#collectTimeOrderedData() tombstone optimisations (CASSANDRA-7394)
- * Fix assertion error in CL.ANY timeout handling (CASSANDRA-7364)
- * Handle empty CFs in Memtable#maybeUpdateLiveRatio() (CASSANDRA-7401)
- * Fix native protocol CAS batches (CASSANDRA-7337)
- * Add per-CF range read request latency metrics (CASSANDRA-7338)
- * Fix NPE in StreamTransferTask.createMessageForRetry() (CASSANDRA-7323)
- * Add conditional CREATE/DROP USER support (CASSANDRA-7264)
- * Swap local and global default read repair chances (CASSANDRA-7320)
- * Add missing iso8601 patterns for date strings (CASSANDRA-6973)
- * Support selecting multiple rows in a partition using IN (CASSANDRA-6875)
- * cqlsh: always emphasize the partition key in DESC output (CASSANDRA-7274)
+2.1.0-rc1
+ * Revert flush directory (CASSANDRA-6357)
+ * More efficient executor service for fast operations (CASSANDRA-4718)
+ * Move less common tools into a new cassandra-tools package (CASSANDRA-7160)
+ * Support more concurrent requests in native protocol (CASSANDRA-7231)
+ * Add tab-completion to debian nodetool packaging (CASSANDRA-6421)
+ * Change concurrent_compactors defaults (CASSANDRA-7139)
+ * Add PowerShell Windows launch scripts (CASSANDRA-7001)
+ * Make commitlog archive+restore more robust (CASSANDRA-6974)
+ * Fix marking commitlogsegments clean (CASSANDRA-6959)
+ * Add snapshot "manifest" describing files included (CASSANDRA-6326)
+ * Parallel streaming for sstableloader (CASSANDRA-3668)
+ * Fix bugs in supercolumns handling (CASSANDRA-7138)
+ * Fix ClassClassException on composite dense tables (CASSANDRA-7112)
+ * Cleanup and optimize collation and slice iterators (CASSANDRA-7107)
+ * Upgrade NBHM lib (CASSANDRA-7128)
+ * Optimize netty server (CASSANDRA-6861)
+ * Fix repair hang when given CF does not exist (CASSANDRA-7189)
+ * Allow c* to be shutdown in an embedded mode (CASSANDRA-5635)
+ * Add server side batching to native transport (CASSANDRA-5663)
+ * Make batchlog replay asynchronous (CASSANDRA-6134)
+ * remove unused classes (CASSANDRA-7197)
+ * Limit user types to the keyspace they are defined in (CASSANDRA-6643)
+ * Add validate method to CollectionType (CASSANDRA-7208)
+ * New serialization format for UDT values (CASSANDRA-7209, CASSANDRA-7261)
+ * Fix nodetool netstats (CASSANDRA-7270)
+ * Fix potential ClassCastException in HintedHandoffManager (CASSANDRA-7284)
+ * Use prepared statements internally (CASSANDRA-6975)
+ * Fix broken paging state with prepared statement (CASSANDRA-7120)
+ * Fix IllegalArgumentException in CqlStorage (CASSANDRA-7287)
+ * Allow nulls/non-existant fields in UDT (CASSANDRA-7206)
+ * Backport Thrift MultiSliceRequest (CASSANDRA-7027)
+ * Handle overlapping MultiSlices (CASSANDRA-7279)
+ * Fix DataOutputTest on Windows (CASSANDRA-7265)
+ * Embedded sets in user defined data-types are not updating (CASSANDRA-7267)
+ * Add tuple type to CQL/native protocol (CASSANDRA-7248)
+ * Fix CqlPagingRecordReader on tables with few rows (CASSANDRA-7322)
+Merged from 2.0:
* Copy compaction options to make sure they are reloaded (CASSANDRA-7290)
* Add option to do more aggressive tombstone compactions (CASSANDRA-6563)
* Don't try to compact already-compacting files in HHOM (CASSANDRA-7288)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 1e3f699,824e0bd..a482d97
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -1928,13 -1917,14 +1928,14 @@@ public class StorageService extends Not
Collection<Range<Token>> ranges = getRangesForEndpoint(keyspaceName, endpoint);
if (logger.isDebugEnabled())
- logger.debug("Node " + endpoint + " ranges [" + StringUtils.join(ranges, ", ") + "]");
+ logger.debug("Node {} ranges [{}]", endpoint, StringUtils.join(ranges, ", "));
- Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
+ Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[11/15] git commit: merge from 2.0
Posted by jb...@apache.org.
merge from 2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/81f8e370
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/81f8e370
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/81f8e370
Branch: refs/heads/cassandra-2.1
Commit: 81f8e370556f42b5f2608f5efbf8bccbb16c9a0c
Parents: 2db047b 7d16921
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:26:23 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:26:23 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++++
.../cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index be91bbc,e659891..57b0183
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,16 -1,5 +1,17 @@@
-2.0.10
- * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+2.1.0-rc6
+ * Fix Thrift range filtering without 2ary index lookups (CASSANDRA-7741)
+ * Add tracing entries about concurrent range requests (CASSANDRA-7599)
+ * (cqlsh) Fix DESCRIBE for NTS keyspaces (CASSANDRA-7729)
+ * Remove netty buffer ref-counting (CASSANDRA-7735)
+ * Pass mutated cf to index updater for use by PRSI (CASSANDRA-7742)
+ * Include stress yaml example in release and deb (CASSANDRA-7717)
+ * workaround for netty issue causing corrupted data off the wire (CASSANDRA-7695)
+ * cqlsh DESC CLUSTER fails retrieving ring information (CASSANDRA-7687)
+ * Fix binding null values inside UDT (CASSANDRA-7685)
+ * Fix UDT field selection with empty fields (CASSANDRA-7670)
+ * Bogus deserialization of static cells from sstable (CASSANDRA-7684)
+Merged from 2.0:
++ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
* Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
* Give CRR a default input_cql Statement (CASSANDRA-7226)
@@@ -138,46 -42,28 +139,53 @@@ Merged from 2.0
* Backport CASSANDRA-6747 (CASSANDRA-7560)
* Track max/min timestamps for range tombstones (CASSANDRA-7647)
* Fix NPE when listing saved caches dir (CASSANDRA-7632)
+ Merged from 1.2:
- * Clone token map outside of hot gossip loops (CASSANDRA-7758)
+ * Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
+ * Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
+ * Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
+ * SimpleSeedProvider no longer caches seeds forever (CASSANDRA-7663)
+ * Set correct stream ID on responses when non-Exception Throwables
+ are thrown while handling native protocol messages (CASSANDRA-7470)
-2.0.9
- * Fix CC#collectTimeOrderedData() tombstone optimisations (CASSANDRA-7394)
- * Fix assertion error in CL.ANY timeout handling (CASSANDRA-7364)
- * Handle empty CFs in Memtable#maybeUpdateLiveRatio() (CASSANDRA-7401)
- * Fix native protocol CAS batches (CASSANDRA-7337)
- * Add per-CF range read request latency metrics (CASSANDRA-7338)
- * Fix NPE in StreamTransferTask.createMessageForRetry() (CASSANDRA-7323)
- * Add conditional CREATE/DROP USER support (CASSANDRA-7264)
- * Swap local and global default read repair chances (CASSANDRA-7320)
- * Add missing iso8601 patterns for date strings (CASSANDRA-6973)
- * Support selecting multiple rows in a partition using IN (CASSANDRA-6875)
- * cqlsh: always emphasize the partition key in DESC output (CASSANDRA-7274)
+2.1.0-rc1
+ * Revert flush directory (CASSANDRA-6357)
+ * More efficient executor service for fast operations (CASSANDRA-4718)
+ * Move less common tools into a new cassandra-tools package (CASSANDRA-7160)
+ * Support more concurrent requests in native protocol (CASSANDRA-7231)
+ * Add tab-completion to debian nodetool packaging (CASSANDRA-6421)
+ * Change concurrent_compactors defaults (CASSANDRA-7139)
+ * Add PowerShell Windows launch scripts (CASSANDRA-7001)
+ * Make commitlog archive+restore more robust (CASSANDRA-6974)
+ * Fix marking commitlogsegments clean (CASSANDRA-6959)
+ * Add snapshot "manifest" describing files included (CASSANDRA-6326)
+ * Parallel streaming for sstableloader (CASSANDRA-3668)
+ * Fix bugs in supercolumns handling (CASSANDRA-7138)
+ * Fix ClassClassException on composite dense tables (CASSANDRA-7112)
+ * Cleanup and optimize collation and slice iterators (CASSANDRA-7107)
+ * Upgrade NBHM lib (CASSANDRA-7128)
+ * Optimize netty server (CASSANDRA-6861)
+ * Fix repair hang when given CF does not exist (CASSANDRA-7189)
+ * Allow c* to be shutdown in an embedded mode (CASSANDRA-5635)
+ * Add server side batching to native transport (CASSANDRA-5663)
+ * Make batchlog replay asynchronous (CASSANDRA-6134)
+ * remove unused classes (CASSANDRA-7197)
+ * Limit user types to the keyspace they are defined in (CASSANDRA-6643)
+ * Add validate method to CollectionType (CASSANDRA-7208)
+ * New serialization format for UDT values (CASSANDRA-7209, CASSANDRA-7261)
+ * Fix nodetool netstats (CASSANDRA-7270)
+ * Fix potential ClassCastException in HintedHandoffManager (CASSANDRA-7284)
+ * Use prepared statements internally (CASSANDRA-6975)
+ * Fix broken paging state with prepared statement (CASSANDRA-7120)
+ * Fix IllegalArgumentException in CqlStorage (CASSANDRA-7287)
+ * Allow nulls/non-existant fields in UDT (CASSANDRA-7206)
+ * Backport Thrift MultiSliceRequest (CASSANDRA-7027)
+ * Handle overlapping MultiSlices (CASSANDRA-7279)
+ * Fix DataOutputTest on Windows (CASSANDRA-7265)
+ * Embedded sets in user defined data-types are not updating (CASSANDRA-7267)
+ * Add tuple type to CQL/native protocol (CASSANDRA-7248)
+ * Fix CqlPagingRecordReader on tables with few rows (CASSANDRA-7322)
+Merged from 2.0:
* Copy compaction options to make sure they are reloaded (CASSANDRA-7290)
* Add option to do more aggressive tombstone compactions (CASSANDRA-6563)
* Don't try to compact already-compacting files in HHOM (CASSANDRA-7288)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 1e3f699,824e0bd..a482d97
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -1928,13 -1917,14 +1928,14 @@@ public class StorageService extends Not
Collection<Range<Token>> ranges = getRangesForEndpoint(keyspaceName, endpoint);
if (logger.isDebugEnabled())
- logger.debug("Node " + endpoint + " ranges [" + StringUtils.join(ranges, ", ") + "]");
+ logger.debug("Node {} ranges [{}]", endpoint, StringUtils.join(ranges, ", "));
- Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
+ Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[15/15] git commit: merge from 2.1
Posted by jb...@apache.org.
merge from 2.1
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/59600625
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/59600625
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/59600625
Branch: refs/heads/trunk
Commit: 59600625fe3c3e6bb45df8151891d518151a4ce8
Parents: d2bed56 25982d1
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:31:22 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:31:22 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++++
src/java/org/apache/cassandra/locator/TokenMetadata.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/59600625/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/59600625/src/java/org/apache/cassandra/locator/TokenMetadata.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/locator/TokenMetadata.java
index 2a6a624,f848e3b..a609c67
--- a/src/java/org/apache/cassandra/locator/TokenMetadata.java
+++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java
@@@ -671,109 -671,9 +671,110 @@@ public class TokenMetadat
return ranges;
}
- public void setPendingRanges(String keyspaceName, Multimap<Range<Token>, InetAddress> rangeMap)
+ /**
+ * Calculate pending ranges according to bootsrapping and leaving nodes. Reasoning is:
+ *
+ * (1) When in doubt, it is better to write too much to a node than too little. That is, if
+ * there are multiple nodes moving, calculate the biggest ranges a node could have. Cleaning
+ * up unneeded data afterwards is better than missing writes during movement.
+ * (2) When a node leaves, ranges for other nodes can only grow (a node might get additional
+ * ranges, but it will not lose any of its current ranges as a result of a leave). Therefore
+ * we will first remove _all_ leaving tokens for the sake of calculation and then check what
+ * ranges would go where if all nodes are to leave. This way we get the biggest possible
+ * ranges with regard current leave operations, covering all subsets of possible final range
+ * values.
+ * (3) When a node bootstraps, ranges of other nodes can only get smaller. Without doing
+ * complex calculations to see if multiple bootstraps overlap, we simply base calculations
+ * on the same token ring used before (reflecting situation after all leave operations have
+ * completed). Bootstrapping nodes will be added and removed one by one to that metadata and
+ * checked what their ranges would be. This will give us the biggest possible ranges the
+ * node could have. It might be that other bootstraps make our actual final ranges smaller,
+ * but it does not matter as we can clean up the data afterwards.
+ *
+ * NOTE: This is heavy and ineffective operation. This will be done only once when a node
+ * changes state in the cluster, so it should be manageable.
+ */
+ public void calculatePendingRanges(AbstractReplicationStrategy strategy, String keyspaceName)
{
- pendingRanges.put(keyspaceName, rangeMap);
+ lock.readLock().lock();
+ try
+ {
+ Multimap<Range<Token>, InetAddress> newPendingRanges = HashMultimap.create();
+
+ if (bootstrapTokens.isEmpty() && leavingEndpoints.isEmpty() && movingEndpoints.isEmpty())
+ {
+ if (logger.isDebugEnabled())
+ logger.debug("No bootstrapping, leaving or moving nodes -> empty pending ranges for {}", keyspaceName);
+
+ pendingRanges.put(keyspaceName, newPendingRanges);
+ return;
+ }
+
+ Multimap<InetAddress, Range<Token>> addressRanges = strategy.getAddressRanges();
+
+ // Copy of metadata reflecting the situation after all leave operations are finished.
+ TokenMetadata allLeftMetadata = cloneAfterAllLeft();
+
+ // get all ranges that will be affected by leaving nodes
+ Set<Range<Token>> affectedRanges = new HashSet<Range<Token>>();
+ for (InetAddress endpoint : leavingEndpoints)
+ affectedRanges.addAll(addressRanges.get(endpoint));
+
+ // for each of those ranges, find what new nodes will be responsible for the range when
+ // all leaving nodes are gone.
++ TokenMetadata metadata = cloneOnlyTokenMap(); // don't do this in the loop! #7758
+ for (Range<Token> range : affectedRanges)
+ {
- Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, cloneOnlyTokenMap()));
++ Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, metadata));
+ Set<InetAddress> newEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, allLeftMetadata));
+ newPendingRanges.putAll(range, Sets.difference(newEndpoints, currentEndpoints));
+ }
+
+ // At this stage newPendingRanges has been updated according to leave operations. We can
+ // now continue the calculation by checking bootstrapping nodes.
+
+ // For each of the bootstrapping nodes, simply add and remove them one by one to
+ // allLeftMetadata and check in between what their ranges would be.
+ Multimap<InetAddress, Token> bootstrapAddresses = bootstrapTokens.inverse();
+ for (InetAddress endpoint : bootstrapAddresses.keySet())
+ {
+ Collection<Token> tokens = bootstrapAddresses.get(endpoint);
+
+ allLeftMetadata.updateNormalTokens(tokens, endpoint);
+ for (Range<Token> range : strategy.getAddressRanges(allLeftMetadata).get(endpoint))
+ newPendingRanges.put(range, endpoint);
+ allLeftMetadata.removeEndpoint(endpoint);
+ }
+
+ // At this stage newPendingRanges has been updated according to leaving and bootstrapping nodes.
+ // We can now finish the calculation by checking moving nodes.
+
+ // For each of the moving nodes, we do the same thing we did for bootstrapping:
+ // simply add and remove them one by one to allLeftMetadata and check in between what their ranges would be.
+ for (Pair<Token, InetAddress> moving : movingEndpoints)
+ {
+ InetAddress endpoint = moving.right; // address of the moving node
+
+ // moving.left is a new token of the endpoint
+ allLeftMetadata.updateNormalToken(moving.left, endpoint);
+
+ for (Range<Token> range : strategy.getAddressRanges(allLeftMetadata).get(endpoint))
+ {
+ newPendingRanges.put(range, endpoint);
+ }
+
+ allLeftMetadata.removeEndpoint(endpoint);
+ }
+
+ pendingRanges.put(keyspaceName, newPendingRanges);
+
+ if (logger.isDebugEnabled())
+ logger.debug("Pending ranges:\n{}", (pendingRanges.isEmpty() ? "<empty>" : printPendingRanges()));
+ }
+ finally
+ {
+ lock.readLock().unlock();
+ }
}
public Token getPredecessor(Token token)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/59600625/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
[12/15] git commit: merge from 2.0
Posted by jb...@apache.org.
merge from 2.0
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/81f8e370
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/81f8e370
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/81f8e370
Branch: refs/heads/cassandra-2.1.0
Commit: 81f8e370556f42b5f2608f5efbf8bccbb16c9a0c
Parents: 2db047b 7d16921
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:26:23 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:26:23 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++++
.../cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index be91bbc,e659891..57b0183
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,16 -1,5 +1,17 @@@
-2.0.10
- * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+2.1.0-rc6
+ * Fix Thrift range filtering without 2ary index lookups (CASSANDRA-7741)
+ * Add tracing entries about concurrent range requests (CASSANDRA-7599)
+ * (cqlsh) Fix DESCRIBE for NTS keyspaces (CASSANDRA-7729)
+ * Remove netty buffer ref-counting (CASSANDRA-7735)
+ * Pass mutated cf to index updater for use by PRSI (CASSANDRA-7742)
+ * Include stress yaml example in release and deb (CASSANDRA-7717)
+ * workaround for netty issue causing corrupted data off the wire (CASSANDRA-7695)
+ * cqlsh DESC CLUSTER fails retrieving ring information (CASSANDRA-7687)
+ * Fix binding null values inside UDT (CASSANDRA-7685)
+ * Fix UDT field selection with empty fields (CASSANDRA-7670)
+ * Bogus deserialization of static cells from sstable (CASSANDRA-7684)
+Merged from 2.0:
++ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
* Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
* Give CRR a default input_cql Statement (CASSANDRA-7226)
@@@ -138,46 -42,28 +139,53 @@@ Merged from 2.0
* Backport CASSANDRA-6747 (CASSANDRA-7560)
* Track max/min timestamps for range tombstones (CASSANDRA-7647)
* Fix NPE when listing saved caches dir (CASSANDRA-7632)
+ Merged from 1.2:
- * Clone token map outside of hot gossip loops (CASSANDRA-7758)
+ * Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
+ * Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
+ * Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
+ * SimpleSeedProvider no longer caches seeds forever (CASSANDRA-7663)
+ * Set correct stream ID on responses when non-Exception Throwables
+ are thrown while handling native protocol messages (CASSANDRA-7470)
-2.0.9
- * Fix CC#collectTimeOrderedData() tombstone optimisations (CASSANDRA-7394)
- * Fix assertion error in CL.ANY timeout handling (CASSANDRA-7364)
- * Handle empty CFs in Memtable#maybeUpdateLiveRatio() (CASSANDRA-7401)
- * Fix native protocol CAS batches (CASSANDRA-7337)
- * Add per-CF range read request latency metrics (CASSANDRA-7338)
- * Fix NPE in StreamTransferTask.createMessageForRetry() (CASSANDRA-7323)
- * Add conditional CREATE/DROP USER support (CASSANDRA-7264)
- * Swap local and global default read repair chances (CASSANDRA-7320)
- * Add missing iso8601 patterns for date strings (CASSANDRA-6973)
- * Support selecting multiple rows in a partition using IN (CASSANDRA-6875)
- * cqlsh: always emphasize the partition key in DESC output (CASSANDRA-7274)
+2.1.0-rc1
+ * Revert flush directory (CASSANDRA-6357)
+ * More efficient executor service for fast operations (CASSANDRA-4718)
+ * Move less common tools into a new cassandra-tools package (CASSANDRA-7160)
+ * Support more concurrent requests in native protocol (CASSANDRA-7231)
+ * Add tab-completion to debian nodetool packaging (CASSANDRA-6421)
+ * Change concurrent_compactors defaults (CASSANDRA-7139)
+ * Add PowerShell Windows launch scripts (CASSANDRA-7001)
+ * Make commitlog archive+restore more robust (CASSANDRA-6974)
+ * Fix marking commitlogsegments clean (CASSANDRA-6959)
+ * Add snapshot "manifest" describing files included (CASSANDRA-6326)
+ * Parallel streaming for sstableloader (CASSANDRA-3668)
+ * Fix bugs in supercolumns handling (CASSANDRA-7138)
+ * Fix ClassClassException on composite dense tables (CASSANDRA-7112)
+ * Cleanup and optimize collation and slice iterators (CASSANDRA-7107)
+ * Upgrade NBHM lib (CASSANDRA-7128)
+ * Optimize netty server (CASSANDRA-6861)
+ * Fix repair hang when given CF does not exist (CASSANDRA-7189)
+ * Allow c* to be shutdown in an embedded mode (CASSANDRA-5635)
+ * Add server side batching to native transport (CASSANDRA-5663)
+ * Make batchlog replay asynchronous (CASSANDRA-6134)
+ * remove unused classes (CASSANDRA-7197)
+ * Limit user types to the keyspace they are defined in (CASSANDRA-6643)
+ * Add validate method to CollectionType (CASSANDRA-7208)
+ * New serialization format for UDT values (CASSANDRA-7209, CASSANDRA-7261)
+ * Fix nodetool netstats (CASSANDRA-7270)
+ * Fix potential ClassCastException in HintedHandoffManager (CASSANDRA-7284)
+ * Use prepared statements internally (CASSANDRA-6975)
+ * Fix broken paging state with prepared statement (CASSANDRA-7120)
+ * Fix IllegalArgumentException in CqlStorage (CASSANDRA-7287)
+ * Allow nulls/non-existant fields in UDT (CASSANDRA-7206)
+ * Backport Thrift MultiSliceRequest (CASSANDRA-7027)
+ * Handle overlapping MultiSlices (CASSANDRA-7279)
+ * Fix DataOutputTest on Windows (CASSANDRA-7265)
+ * Embedded sets in user defined data-types are not updating (CASSANDRA-7267)
+ * Add tuple type to CQL/native protocol (CASSANDRA-7248)
+ * Fix CqlPagingRecordReader on tables with few rows (CASSANDRA-7322)
+Merged from 2.0:
* Copy compaction options to make sure they are reloaded (CASSANDRA-7290)
* Add option to do more aggressive tombstone compactions (CASSANDRA-6563)
* Don't try to compact already-compacting files in HHOM (CASSANDRA-7288)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/81f8e370/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 1e3f699,824e0bd..a482d97
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -1928,13 -1917,14 +1928,14 @@@ public class StorageService extends Not
Collection<Range<Token>> ranges = getRangesForEndpoint(keyspaceName, endpoint);
if (logger.isDebugEnabled())
- logger.debug("Node " + endpoint + " ranges [" + StringUtils.join(ranges, ", ") + "]");
+ logger.debug("Node {} ranges [{}]", endpoint, StringUtils.join(ranges, ", "));
- Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
+ Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[05/15] git commit: Clone token map outside of hot gossip loops patch
by rbranson; reviewed by jbellis for CASSANDRA-7758
Posted by jb...@apache.org.
Clone token map outside of hot gossip loops
patch by rbranson; reviewed by jbellis for CASSANDRA-7758
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2738e867
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2738e867
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2738e867
Branch: refs/heads/cassandra-2.1.0
Commit: 2738e86783490a6bb83273281e8c4c4dcb873a3d
Parents: b55f38b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:23:43 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:23:43 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2c95a52..5dd3ad2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.19
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
index 1c0d977..d8b7586 100644
--- a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
+++ b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
@@ -144,9 +144,10 @@ public class PendingRangeCalculatorService extends PendingRangeCalculatorService
// for each of those ranges, find what new nodes will be responsible for the range when
// all leaving nodes are gone.
+ TokenMetadata metadata = tm.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : affectedRanges)
{
- Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, tm.cloneOnlyTokenMap()));
+ Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, metadata));
Set<InetAddress> newEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, allLeftMetadata));
pendingRanges.putAll(range, Sets.difference(newEndpoints, currentEndpoints));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/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 047e8d6..563b259 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1940,8 +1940,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[02/15] git commit: Clone token map outside of hot gossip loops patch
by rbranson; reviewed by jbellis for CASSANDRA-7758
Posted by jb...@apache.org.
Clone token map outside of hot gossip loops
patch by rbranson; reviewed by jbellis for CASSANDRA-7758
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2738e867
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2738e867
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2738e867
Branch: refs/heads/cassandra-2.0
Commit: 2738e86783490a6bb83273281e8c4c4dcb873a3d
Parents: b55f38b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:23:43 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:23:43 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2c95a52..5dd3ad2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.19
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
index 1c0d977..d8b7586 100644
--- a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
+++ b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
@@ -144,9 +144,10 @@ public class PendingRangeCalculatorService extends PendingRangeCalculatorService
// for each of those ranges, find what new nodes will be responsible for the range when
// all leaving nodes are gone.
+ TokenMetadata metadata = tm.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : affectedRanges)
{
- Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, tm.cloneOnlyTokenMap()));
+ Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, metadata));
Set<InetAddress> newEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, allLeftMetadata));
pendingRanges.putAll(range, Sets.difference(newEndpoints, currentEndpoints));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/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 047e8d6..563b259 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1940,8 +1940,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[03/15] git commit: Clone token map outside of hot gossip loops patch
by rbranson; reviewed by jbellis for CASSANDRA-7758
Posted by jb...@apache.org.
Clone token map outside of hot gossip loops
patch by rbranson; reviewed by jbellis for CASSANDRA-7758
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2738e867
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2738e867
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2738e867
Branch: refs/heads/cassandra-2.1
Commit: 2738e86783490a6bb83273281e8c4c4dcb873a3d
Parents: b55f38b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:23:43 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:23:43 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2c95a52..5dd3ad2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.19
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
index 1c0d977..d8b7586 100644
--- a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
+++ b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
@@ -144,9 +144,10 @@ public class PendingRangeCalculatorService extends PendingRangeCalculatorService
// for each of those ranges, find what new nodes will be responsible for the range when
// all leaving nodes are gone.
+ TokenMetadata metadata = tm.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : affectedRanges)
{
- Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, tm.cloneOnlyTokenMap()));
+ Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, metadata));
Set<InetAddress> newEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, allLeftMetadata));
pendingRanges.putAll(range, Sets.difference(newEndpoints, currentEndpoints));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/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 047e8d6..563b259 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1940,8 +1940,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[06/15] 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/7d169211
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7d169211
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7d169211
Branch: refs/heads/trunk
Commit: 7d169211e1907933aa4847cb08b8ab29882ab57f
Parents: 0edd5ee 2738e86
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:25:42 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:25:42 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ae88957,5dd3ad2..e659891
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,48 -1,5 +1,49 @@@
-1.2.19
+2.0.10
+ * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+ * Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
+ * Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
+ * Give CRR a default input_cql Statement (CASSANDRA-7226)
+ * Better error message when adding a collection with the same name
+ than a previously dropped one (CASSANDRA-6276)
+ * Fix validation when adding static columns (CASSANDRA-7730)
+ * (Thrift) fix range deletion of supercolumns (CASSANDRA-7733)
+ * Fix potential AssertionError in RangeTombstoneList (CASSANDRA-7700)
+ * Validate arguments of blobAs* functions (CASSANDRA-7707)
+ * Fix potential AssertionError with 2ndary indexes (CASSANDRA-6612)
+ * Avoid logging CompactionInterrupted at ERROR (CASSANDRA-7694)
+ * Minor leak in sstable2jon (CASSANDRA-7709)
+ * Add cassandra.auto_bootstrap system property (CASSANDRA-7650)
+ * Remove CqlPagingRecordReader/CqlPagingInputFormat (CASSANDRA-7570)
+ * Fix IncompatibleClassChangeError from hadoop2 (CASSANDRA-7229)
+ * Add 'nodetool sethintedhandoffthrottlekb' (CASSANDRA-7635)
+ * Update java driver (for hadoop) (CASSANDRA-7618)
+ * Fix truncate to always flush (CASSANDRA-7511)
+ * Remove shuffle and taketoken (CASSANDRA-7601)
+ * Switch liveRatio-related log messages to DEBUG (CASSANDRA-7467)
+ * (cqlsh) Add tab-completion for CREATE/DROP USER IF [NOT] EXISTS (CASSANDRA-7611)
+ * Always merge ranges owned by a single node (CASSANDRA-6930)
+ * Pig support for hadoop CqlInputFormat (CASSANDRA-6454)
+ * Fix ReversedType(DateType) mapping to native protocol (CASSANDRA-7576)
+ * (Windows) force range-based repair to non-sequential mode (CASSANDRA-7541)
+ * Fix range merging when DES scores are zero (CASSANDRA-7535)
+ * Warn when SSL certificates have expired (CASSANDRA-7528)
+ * Workaround JVM NPE on JMX bind failure (CASSANDRA-7254)
+ * Fix race in FileCacheService RemovalListener (CASSANDRA-7278)
+ * Fix inconsistent use of consistencyForCommit that allowed LOCAL_QUORUM
+ operations to incorrect become full QUORUM (CASSANDRA-7345)
+ * Properly handle unrecognized opcodes and flags (CASSANDRA-7440)
+ * (Hadoop) close CqlRecordWriter clients when finished (CASSANDRA-7459)
+ * Make sure high level sstables get compacted (CASSANDRA-7414)
+ * Fix AssertionError when using empty clustering columns and static columns
+ (CASSANDRA-7455)
+ * Add inter_dc_stream_throughput_outbound_megabits_per_sec (CASSANDRA-6596)
+ * Add option to disable STCS in L0 (CASSANDRA-6621)
+ * Fix error when doing reversed queries with static columns (CASSANDRA-7490)
+ * Backport CASSANDRA-6747 (CASSANDRA-7560)
+ * Track max/min timestamps for range tombstones (CASSANDRA-7647)
+ * Fix NPE when listing saved caches dir (CASSANDRA-7632)
+Merged from 1.2:
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index d5b5289,563b259..824e0bd
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -1922,8 -1940,9 +1922,9 @@@ public class StorageService extends Not
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
++ currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[08/15] 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/7d169211
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7d169211
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7d169211
Branch: refs/heads/cassandra-2.0
Commit: 7d169211e1907933aa4847cb08b8ab29882ab57f
Parents: 0edd5ee 2738e86
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:25:42 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:25:42 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ae88957,5dd3ad2..e659891
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,48 -1,5 +1,49 @@@
-1.2.19
+2.0.10
+ * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+ * Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
+ * Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
+ * Give CRR a default input_cql Statement (CASSANDRA-7226)
+ * Better error message when adding a collection with the same name
+ than a previously dropped one (CASSANDRA-6276)
+ * Fix validation when adding static columns (CASSANDRA-7730)
+ * (Thrift) fix range deletion of supercolumns (CASSANDRA-7733)
+ * Fix potential AssertionError in RangeTombstoneList (CASSANDRA-7700)
+ * Validate arguments of blobAs* functions (CASSANDRA-7707)
+ * Fix potential AssertionError with 2ndary indexes (CASSANDRA-6612)
+ * Avoid logging CompactionInterrupted at ERROR (CASSANDRA-7694)
+ * Minor leak in sstable2jon (CASSANDRA-7709)
+ * Add cassandra.auto_bootstrap system property (CASSANDRA-7650)
+ * Remove CqlPagingRecordReader/CqlPagingInputFormat (CASSANDRA-7570)
+ * Fix IncompatibleClassChangeError from hadoop2 (CASSANDRA-7229)
+ * Add 'nodetool sethintedhandoffthrottlekb' (CASSANDRA-7635)
+ * Update java driver (for hadoop) (CASSANDRA-7618)
+ * Fix truncate to always flush (CASSANDRA-7511)
+ * Remove shuffle and taketoken (CASSANDRA-7601)
+ * Switch liveRatio-related log messages to DEBUG (CASSANDRA-7467)
+ * (cqlsh) Add tab-completion for CREATE/DROP USER IF [NOT] EXISTS (CASSANDRA-7611)
+ * Always merge ranges owned by a single node (CASSANDRA-6930)
+ * Pig support for hadoop CqlInputFormat (CASSANDRA-6454)
+ * Fix ReversedType(DateType) mapping to native protocol (CASSANDRA-7576)
+ * (Windows) force range-based repair to non-sequential mode (CASSANDRA-7541)
+ * Fix range merging when DES scores are zero (CASSANDRA-7535)
+ * Warn when SSL certificates have expired (CASSANDRA-7528)
+ * Workaround JVM NPE on JMX bind failure (CASSANDRA-7254)
+ * Fix race in FileCacheService RemovalListener (CASSANDRA-7278)
+ * Fix inconsistent use of consistencyForCommit that allowed LOCAL_QUORUM
+ operations to incorrect become full QUORUM (CASSANDRA-7345)
+ * Properly handle unrecognized opcodes and flags (CASSANDRA-7440)
+ * (Hadoop) close CqlRecordWriter clients when finished (CASSANDRA-7459)
+ * Make sure high level sstables get compacted (CASSANDRA-7414)
+ * Fix AssertionError when using empty clustering columns and static columns
+ (CASSANDRA-7455)
+ * Add inter_dc_stream_throughput_outbound_megabits_per_sec (CASSANDRA-6596)
+ * Add option to disable STCS in L0 (CASSANDRA-6621)
+ * Fix error when doing reversed queries with static columns (CASSANDRA-7490)
+ * Backport CASSANDRA-6747 (CASSANDRA-7560)
+ * Track max/min timestamps for range tombstones (CASSANDRA-7647)
+ * Fix NPE when listing saved caches dir (CASSANDRA-7632)
+Merged from 1.2:
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index d5b5289,563b259..824e0bd
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -1922,8 -1940,9 +1922,9 @@@ public class StorageService extends Not
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
++ currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[07/15] 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/7d169211
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7d169211
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7d169211
Branch: refs/heads/cassandra-2.1
Commit: 7d169211e1907933aa4847cb08b8ab29882ab57f
Parents: 0edd5ee 2738e86
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:25:42 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:25:42 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ae88957,5dd3ad2..e659891
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,48 -1,5 +1,49 @@@
-1.2.19
+2.0.10
+ * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+ * Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
+ * Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
+ * Give CRR a default input_cql Statement (CASSANDRA-7226)
+ * Better error message when adding a collection with the same name
+ than a previously dropped one (CASSANDRA-6276)
+ * Fix validation when adding static columns (CASSANDRA-7730)
+ * (Thrift) fix range deletion of supercolumns (CASSANDRA-7733)
+ * Fix potential AssertionError in RangeTombstoneList (CASSANDRA-7700)
+ * Validate arguments of blobAs* functions (CASSANDRA-7707)
+ * Fix potential AssertionError with 2ndary indexes (CASSANDRA-6612)
+ * Avoid logging CompactionInterrupted at ERROR (CASSANDRA-7694)
+ * Minor leak in sstable2jon (CASSANDRA-7709)
+ * Add cassandra.auto_bootstrap system property (CASSANDRA-7650)
+ * Remove CqlPagingRecordReader/CqlPagingInputFormat (CASSANDRA-7570)
+ * Fix IncompatibleClassChangeError from hadoop2 (CASSANDRA-7229)
+ * Add 'nodetool sethintedhandoffthrottlekb' (CASSANDRA-7635)
+ * Update java driver (for hadoop) (CASSANDRA-7618)
+ * Fix truncate to always flush (CASSANDRA-7511)
+ * Remove shuffle and taketoken (CASSANDRA-7601)
+ * Switch liveRatio-related log messages to DEBUG (CASSANDRA-7467)
+ * (cqlsh) Add tab-completion for CREATE/DROP USER IF [NOT] EXISTS (CASSANDRA-7611)
+ * Always merge ranges owned by a single node (CASSANDRA-6930)
+ * Pig support for hadoop CqlInputFormat (CASSANDRA-6454)
+ * Fix ReversedType(DateType) mapping to native protocol (CASSANDRA-7576)
+ * (Windows) force range-based repair to non-sequential mode (CASSANDRA-7541)
+ * Fix range merging when DES scores are zero (CASSANDRA-7535)
+ * Warn when SSL certificates have expired (CASSANDRA-7528)
+ * Workaround JVM NPE on JMX bind failure (CASSANDRA-7254)
+ * Fix race in FileCacheService RemovalListener (CASSANDRA-7278)
+ * Fix inconsistent use of consistencyForCommit that allowed LOCAL_QUORUM
+ operations to incorrect become full QUORUM (CASSANDRA-7345)
+ * Properly handle unrecognized opcodes and flags (CASSANDRA-7440)
+ * (Hadoop) close CqlRecordWriter clients when finished (CASSANDRA-7459)
+ * Make sure high level sstables get compacted (CASSANDRA-7414)
+ * Fix AssertionError when using empty clustering columns and static columns
+ (CASSANDRA-7455)
+ * Add inter_dc_stream_throughput_outbound_megabits_per_sec (CASSANDRA-6596)
+ * Add option to disable STCS in L0 (CASSANDRA-6621)
+ * Fix error when doing reversed queries with static columns (CASSANDRA-7490)
+ * Backport CASSANDRA-6747 (CASSANDRA-7560)
+ * Track max/min timestamps for range tombstones (CASSANDRA-7647)
+ * Fix NPE when listing saved caches dir (CASSANDRA-7632)
+Merged from 1.2:
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index d5b5289,563b259..824e0bd
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -1922,8 -1940,9 +1922,9 @@@ public class StorageService extends Not
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
++ currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[14/15] git commit: Merge branch 'cassandra-2.1.0' into cassandra-2.1
Posted by jb...@apache.org.
Merge branch 'cassandra-2.1.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/25982d12
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/25982d12
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/25982d12
Branch: refs/heads/cassandra-2.1
Commit: 25982d12c57e2fed6e73fb1b30510d9f90c4f188
Parents: d9b463e 81f8e37
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:26:33 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:26:33 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++++
.../cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/25982d12/CHANGES.txt
----------------------------------------------------------------------
[13/15] git commit: Merge branch 'cassandra-2.1.0' into cassandra-2.1
Posted by jb...@apache.org.
Merge branch 'cassandra-2.1.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/25982d12
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/25982d12
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/25982d12
Branch: refs/heads/trunk
Commit: 25982d12c57e2fed6e73fb1b30510d9f90c4f188
Parents: d9b463e 81f8e37
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:26:33 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:26:33 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 8 ++++++++
.../cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/25982d12/CHANGES.txt
----------------------------------------------------------------------
[04/15] git commit: Clone token map outside of hot gossip loops patch
by rbranson; reviewed by jbellis for CASSANDRA-7758
Posted by jb...@apache.org.
Clone token map outside of hot gossip loops
patch by rbranson; reviewed by jbellis for CASSANDRA-7758
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2738e867
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2738e867
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2738e867
Branch: refs/heads/trunk
Commit: 2738e86783490a6bb83273281e8c4c4dcb873a3d
Parents: b55f38b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:23:43 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:23:43 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2c95a52..5dd3ad2 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.19
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
index 1c0d977..d8b7586 100644
--- a/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
+++ b/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
@@ -144,9 +144,10 @@ public class PendingRangeCalculatorService extends PendingRangeCalculatorService
// for each of those ranges, find what new nodes will be responsible for the range when
// all leaving nodes are gone.
+ TokenMetadata metadata = tm.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : affectedRanges)
{
- Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, tm.cloneOnlyTokenMap()));
+ Set<InetAddress> currentEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, metadata));
Set<InetAddress> newEndpoints = ImmutableSet.copyOf(strategy.calculateNaturalEndpoints(range.right, allLeftMetadata));
pendingRanges.putAll(range, Sets.difference(newEndpoints, currentEndpoints));
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/2738e867/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 047e8d6..563b259 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1940,8 +1940,9 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
+ currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();
[09/15] 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/7d169211
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7d169211
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7d169211
Branch: refs/heads/cassandra-2.1.0
Commit: 7d169211e1907933aa4847cb08b8ab29882ab57f
Parents: 0edd5ee 2738e86
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Aug 12 16:25:42 2014 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Aug 12 16:25:42 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/PendingRangeCalculatorService.java | 3 ++-
src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ae88957,5dd3ad2..e659891
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,48 -1,5 +1,49 @@@
-1.2.19
+2.0.10
+ * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+ * Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
+ * Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
+ * Give CRR a default input_cql Statement (CASSANDRA-7226)
+ * Better error message when adding a collection with the same name
+ than a previously dropped one (CASSANDRA-6276)
+ * Fix validation when adding static columns (CASSANDRA-7730)
+ * (Thrift) fix range deletion of supercolumns (CASSANDRA-7733)
+ * Fix potential AssertionError in RangeTombstoneList (CASSANDRA-7700)
+ * Validate arguments of blobAs* functions (CASSANDRA-7707)
+ * Fix potential AssertionError with 2ndary indexes (CASSANDRA-6612)
+ * Avoid logging CompactionInterrupted at ERROR (CASSANDRA-7694)
+ * Minor leak in sstable2jon (CASSANDRA-7709)
+ * Add cassandra.auto_bootstrap system property (CASSANDRA-7650)
+ * Remove CqlPagingRecordReader/CqlPagingInputFormat (CASSANDRA-7570)
+ * Fix IncompatibleClassChangeError from hadoop2 (CASSANDRA-7229)
+ * Add 'nodetool sethintedhandoffthrottlekb' (CASSANDRA-7635)
+ * Update java driver (for hadoop) (CASSANDRA-7618)
+ * Fix truncate to always flush (CASSANDRA-7511)
+ * Remove shuffle and taketoken (CASSANDRA-7601)
+ * Switch liveRatio-related log messages to DEBUG (CASSANDRA-7467)
+ * (cqlsh) Add tab-completion for CREATE/DROP USER IF [NOT] EXISTS (CASSANDRA-7611)
+ * Always merge ranges owned by a single node (CASSANDRA-6930)
+ * Pig support for hadoop CqlInputFormat (CASSANDRA-6454)
+ * Fix ReversedType(DateType) mapping to native protocol (CASSANDRA-7576)
+ * (Windows) force range-based repair to non-sequential mode (CASSANDRA-7541)
+ * Fix range merging when DES scores are zero (CASSANDRA-7535)
+ * Warn when SSL certificates have expired (CASSANDRA-7528)
+ * Workaround JVM NPE on JMX bind failure (CASSANDRA-7254)
+ * Fix race in FileCacheService RemovalListener (CASSANDRA-7278)
+ * Fix inconsistent use of consistencyForCommit that allowed LOCAL_QUORUM
+ operations to incorrect become full QUORUM (CASSANDRA-7345)
+ * Properly handle unrecognized opcodes and flags (CASSANDRA-7440)
+ * (Hadoop) close CqlRecordWriter clients when finished (CASSANDRA-7459)
+ * Make sure high level sstables get compacted (CASSANDRA-7414)
+ * Fix AssertionError when using empty clustering columns and static columns
+ (CASSANDRA-7455)
+ * Add inter_dc_stream_throughput_outbound_megabits_per_sec (CASSANDRA-6596)
+ * Add option to disable STCS in L0 (CASSANDRA-6621)
+ * Fix error when doing reversed queries with static columns (CASSANDRA-7490)
+ * Backport CASSANDRA-6747 (CASSANDRA-7560)
+ * Track max/min timestamps for range tombstones (CASSANDRA-7647)
+ * Fix NPE when listing saved caches dir (CASSANDRA-7632)
+Merged from 1.2:
+ * Clone token map outside of hot gossip loops (CASSANDRA-7758)
* Add stop method to EmbeddedCassandraService (CASSANDRA-7595)
* Support connecting to ipv6 jmx with nodetool (CASSANDRA-7669)
* Set gc_grace_seconds to seven days for system schema tables (CASSANDRA-7668)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/PendingRangeCalculatorService.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7d169211/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index d5b5289,563b259..824e0bd
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -1922,8 -1940,9 +1922,9 @@@ public class StorageService extends Not
Map<Range<Token>, List<InetAddress>> currentReplicaEndpoints = new HashMap<Range<Token>, List<InetAddress>>();
// Find (for each range) all nodes that store replicas for these ranges as well
+ TokenMetadata metadata = tokenMetadata.cloneOnlyTokenMap(); // don't do this in the loop! #7758
for (Range<Token> range : ranges)
- currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, tokenMetadata.cloneOnlyTokenMap()));
- currentReplicaEndpoints.put(range, Table.open(table).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
++ currentReplicaEndpoints.put(range, Keyspace.open(keyspaceName).getReplicationStrategy().calculateNaturalEndpoints(range.right, metadata));
TokenMetadata temp = tokenMetadata.cloneAfterAllLeft();