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();