cassandra git commit: Enhanced Compaction Logging

2016-05-02 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/trunk 307890363 -> e16d8a7a6


Enhanced Compaction Logging

patch by Carl Yeksigian; reviewed by Marcus Eriksson for CASSANDRA-10805


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e16d8a7a
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e16d8a7a
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e16d8a7a

Branch: refs/heads/trunk
Commit: e16d8a7a667d50271a183a95be894126cb2a5414
Parents: 3078903
Author: Carl Yeksigian 
Authored: Mon May 2 15:01:39 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 2 15:03:38 2016 -0400

--
 CHANGES.txt |   1 +
 .../apache/cassandra/db/ColumnFamilyStore.java  |  13 +-
 .../compaction/AbstractCompactionStrategy.java  |  23 +-
 .../db/compaction/CompactionLogger.java | 342 +++
 .../compaction/CompactionStrategyManager.java   |  39 ++-
 .../cassandra/db/compaction/CompactionTask.java |   2 +
 .../DateTieredCompactionStrategy.java   |  31 ++
 .../DateTieredCompactionStrategyOptions.java|   8 +-
 .../compaction/LeveledCompactionStrategy.java   |  27 +-
 .../SizeTieredCompactionStrategy.java   |   1 +
 10 files changed, 475 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e16d8a7a/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index c802031..1a3069c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.6
+ * Enhanced Compaction Logging (CASSANDRA-10805)
  * Make prepared statement cache size configurable (CASSANDRA-11555)
  * Integrated JMX authentication and authorization (CASSANDRA-10091)
  * Add units to stress ouput (CASSANDRA-11352)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e16d8a7a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
--
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index b47cf85..6b841c2 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1163,12 +1163,13 @@ public class ColumnFamilyStore implements 
ColumnFamilyStoreMBean
 }
 memtable.cfs.replaceFlushed(memtable, sstables);
 reclaim(memtable);
-logger.debug("Flushed to {} ({} sstables, {}), biggest {}, 
smallest {}",
- sstables,
- sstables.size(),
- FBUtilities.prettyPrintMemory(totalBytesOnDisk),
- FBUtilities.prettyPrintMemory(maxBytesOnDisk),
- FBUtilities.prettyPrintMemory(minBytesOnDisk));
+
memtable.cfs.compactionStrategyManager.compactionLogger.flush(sstables);
+logger.debug("Flushed to {} ({} sstables, {}), biggest {}, 
smallest {}",
+ sstables,
+ sstables.size(),
+ FBUtilities.prettyPrintMemory(totalBytesOnDisk),
+ FBUtilities.prettyPrintMemory(maxBytesOnDisk),
+ FBUtilities.prettyPrintMemory(minBytesOnDisk));
 }
 
 private void reclaim(final Memtable memtable)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e16d8a7a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
--
diff --git 
a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java 
b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
index 40f0ce2..668bc51 100644
--- 
a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
+++ 
b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
@@ -63,11 +63,13 @@ public abstract class AbstractCompactionStrategy
 // minimum interval needed to perform tombstone removal compaction in 
seconds, default 86400 or 1 day.
 protected static final long DEFAULT_TOMBSTONE_COMPACTION_INTERVAL = 86400;
 protected static final boolean 
DEFAULT_UNCHECKED_TOMBSTONE_COMPACTION_OPTION = false;
+protected static final boolean DEFAULT_LOG_ALL_OPTION = false;
 
 protected static final String TOMBSTONE_THRESHOLD_OPTION = 
"tombstone_threshold";
 protected static final String TOMBSTONE_COMPACTION_INTERVAL_OPTION = 
"tombstone_compaction_interval";
 // disable range overlap check when deciding if an SSTable is candidate 
for tombstone compaction (CASSAND

[1/3] cassandra git commit: Disallow creating view with a static column

2016-05-02 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 a1cc804f5 -> 6d725afae
  refs/heads/trunk e16d8a7a6 -> 7a7249ac4


Disallow creating view with a static column

patch by Carl Yeksigian; reviewed by Sylvain Lebresne for CASSANDRA-11602


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6d725afa
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6d725afa
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6d725afa

Branch: refs/heads/cassandra-3.0
Commit: 6d725afaef5bc8604cf775ff2498f21530c0288c
Parents: a1cc804
Author: Carl Yeksigian 
Authored: Mon May 2 16:12:00 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 2 16:12:00 2016 -0400

--
 CHANGES.txt |  1 +
 .../cql3/statements/CreateViewStatement.java| 15 ++---
 .../org/apache/cassandra/cql3/ViewTest.java | 22 ++--
 3 files changed, 29 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d725afa/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 95db7bc..f947568 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.6
+ * Disallow creating view with a static column (CASSANDRA-11602)
  * Reduce the amount of object allocations caused by the getFunctions methods 
(CASSANDRA-11593)
  * Potential error replaying commitlog with smallint/tinyint/date/time types 
(CASSANDRA-11618)
  * Fix queries with filtering on counter columns (CASSANDRA-11629)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d725afa/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
index 5af4887..45231b7 100644
--- a/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
@@ -168,10 +168,7 @@ public class CreateViewStatement extends 
SchemaAlteringStatement
 if (cdef == null)
 throw new InvalidRequestException("Unknown column name 
detected in CREATE MATERIALIZED VIEW statement : "+identifier);
 
-if (cdef.isStatic())
-ClientWarn.instance.warn(String.format("Unable to include 
static column '%s' in Materialized View SELECT statement", identifier));
-else
-included.add(identifier);
+included.add(identifier);
 }
 
 Set targetPrimaryKeys = new HashSet<>();
@@ -246,10 +243,14 @@ public class CreateViewStatement extends 
SchemaAlteringStatement
 for (ColumnDefinition def : cfm.allColumns())
 {
 ColumnIdentifier identifier = def.name;
+boolean includeDef = included.isEmpty() || 
included.contains(identifier);
+
+if (includeDef && def.isStatic())
+{
+throw new InvalidRequestException(String.format("Unable to 
include static column '%s' which would be included by Materialized View SELECT 
* statement", identifier));
+}
 
-if ((included.isEmpty() || included.contains(identifier))
-&& !targetClusteringColumns.contains(identifier) && 
!targetPartitionKeys.contains(identifier)
-&& !def.isStatic())
+if (includeDef && !targetClusteringColumns.contains(identifier) && 
!targetPartitionKeys.contains(identifier))
 {
 includedColumns.add(identifier);
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d725afa/test/unit/org/apache/cassandra/cql3/ViewTest.java
--
diff --git a/test/unit/org/apache/cassandra/cql3/ViewTest.java 
b/test/unit/org/apache/cassandra/cql3/ViewTest.java
index 830f37f..ac4becb 100644
--- a/test/unit/org/apache/cassandra/cql3/ViewTest.java
+++ b/test/unit/org/apache/cassandra/cql3/ViewTest.java
@@ -207,13 +207,31 @@ public class ViewTest extends CQLTester
 try
 {
 createView("mv_static", "CREATE MATERIALIZED VIEW %%s AS SELECT * 
FROM %s WHERE sval IS NOT NULL AND k IS NOT NULL AND c IS NOT NULL PRIMARY KEY 
(sval,k,c)");
-Assert.fail("MV on static should fail");
+Assert.fail("Use of static column in a MV primary key should 
fail");
 }
 catch (InvalidQueryException e)
 {
 }
 
-createView("mv_s

[2/3] cassandra git commit: Disallow creating view with a static column

2016-05-02 Thread carl
Disallow creating view with a static column

patch by Carl Yeksigian; reviewed by Sylvain Lebresne for CASSANDRA-11602


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6d725afa
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6d725afa
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6d725afa

Branch: refs/heads/trunk
Commit: 6d725afaef5bc8604cf775ff2498f21530c0288c
Parents: a1cc804
Author: Carl Yeksigian 
Authored: Mon May 2 16:12:00 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 2 16:12:00 2016 -0400

--
 CHANGES.txt |  1 +
 .../cql3/statements/CreateViewStatement.java| 15 ++---
 .../org/apache/cassandra/cql3/ViewTest.java | 22 ++--
 3 files changed, 29 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d725afa/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 95db7bc..f947568 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.6
+ * Disallow creating view with a static column (CASSANDRA-11602)
  * Reduce the amount of object allocations caused by the getFunctions methods 
(CASSANDRA-11593)
  * Potential error replaying commitlog with smallint/tinyint/date/time types 
(CASSANDRA-11618)
  * Fix queries with filtering on counter columns (CASSANDRA-11629)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d725afa/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
index 5af4887..45231b7 100644
--- a/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
@@ -168,10 +168,7 @@ public class CreateViewStatement extends 
SchemaAlteringStatement
 if (cdef == null)
 throw new InvalidRequestException("Unknown column name 
detected in CREATE MATERIALIZED VIEW statement : "+identifier);
 
-if (cdef.isStatic())
-ClientWarn.instance.warn(String.format("Unable to include 
static column '%s' in Materialized View SELECT statement", identifier));
-else
-included.add(identifier);
+included.add(identifier);
 }
 
 Set targetPrimaryKeys = new HashSet<>();
@@ -246,10 +243,14 @@ public class CreateViewStatement extends 
SchemaAlteringStatement
 for (ColumnDefinition def : cfm.allColumns())
 {
 ColumnIdentifier identifier = def.name;
+boolean includeDef = included.isEmpty() || 
included.contains(identifier);
+
+if (includeDef && def.isStatic())
+{
+throw new InvalidRequestException(String.format("Unable to 
include static column '%s' which would be included by Materialized View SELECT 
* statement", identifier));
+}
 
-if ((included.isEmpty() || included.contains(identifier))
-&& !targetClusteringColumns.contains(identifier) && 
!targetPartitionKeys.contains(identifier)
-&& !def.isStatic())
+if (includeDef && !targetClusteringColumns.contains(identifier) && 
!targetPartitionKeys.contains(identifier))
 {
 includedColumns.add(identifier);
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d725afa/test/unit/org/apache/cassandra/cql3/ViewTest.java
--
diff --git a/test/unit/org/apache/cassandra/cql3/ViewTest.java 
b/test/unit/org/apache/cassandra/cql3/ViewTest.java
index 830f37f..ac4becb 100644
--- a/test/unit/org/apache/cassandra/cql3/ViewTest.java
+++ b/test/unit/org/apache/cassandra/cql3/ViewTest.java
@@ -207,13 +207,31 @@ public class ViewTest extends CQLTester
 try
 {
 createView("mv_static", "CREATE MATERIALIZED VIEW %%s AS SELECT * 
FROM %s WHERE sval IS NOT NULL AND k IS NOT NULL AND c IS NOT NULL PRIMARY KEY 
(sval,k,c)");
-Assert.fail("MV on static should fail");
+Assert.fail("Use of static column in a MV primary key should 
fail");
 }
 catch (InvalidQueryException e)
 {
 }
 
-createView("mv_static", "CREATE MATERIALIZED VIEW %s AS SELECT * FROM 
%%s WHERE val IS NOT NULL AND k IS NOT NULL AND c IS NOT NULL PRIMARY KEY 
(val,k,c)"

[3/3] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

2016-05-02 Thread carl
Merge branch 'cassandra-3.0' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/7a7249ac
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7a7249ac
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7a7249ac

Branch: refs/heads/trunk
Commit: 7a7249ac4437689dc5091a121aa143ff7bfb97e0
Parents: e16d8a7 6d725af
Author: Carl Yeksigian 
Authored: Mon May 2 16:13:19 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 2 16:13:19 2016 -0400

--
 CHANGES.txt |  1 +
 .../cql3/statements/CreateViewStatement.java| 15 ++---
 .../org/apache/cassandra/cql3/ViewTest.java | 22 ++--
 3 files changed, 29 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/7a7249ac/CHANGES.txt
--
diff --cc CHANGES.txt
index 1a3069c,f947568..4ff5b1a
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,70 -1,5 +1,71 @@@
 -3.0.6
 +3.6
 + * Enhanced Compaction Logging (CASSANDRA-10805)
 + * Make prepared statement cache size configurable (CASSANDRA-11555)
 + * Integrated JMX authentication and authorization (CASSANDRA-10091)
 + * Add units to stress ouput (CASSANDRA-11352)
 + * Fix PER PARTITION LIMIT for single and multi partitions queries 
(CASSANDRA-11603)
 + * Add uncompressed chunk cache for RandomAccessReader (CASSANDRA-5863)
 + * Clarify ClusteringPrefix hierarchy (CASSANDRA-11213)
 + * Always perform collision check before joining ring (CASSANDRA-10134)
 + * SSTableWriter output discrepancy (CASSANDRA-11646)
 + * Fix potential timeout in NativeTransportService.testConcurrentDestroys 
(CASSANDRA-10756)
 + * Support large partitions on the 3.0 sstable format (CASSANDRA-11206)
 + * Add support to rebuild from specific range (CASSANDRA-10406)
 + * Optimize the overlapping lookup by calculating all the
 +   bounds in advance (CASSANDRA-11571)
 + * Support json/yaml output in noetool tablestats (CASSANDRA-5977)
 + * (stress) Add datacenter option to -node options (CASSANDRA-11591)
 + * Fix handling of empty slices (CASSANDRA-11513)
 + * Make number of cores used by cqlsh COPY visible to testing code 
(CASSANDRA-11437)
 + * Allow filtering on clustering columns for queries without secondary 
indexes (CASSANDRA-11310)
 + * Refactor Restriction hierarchy (CASSANDRA-11354)
 + * Eliminate allocations in R/W path (CASSANDRA-11421)
 + * Update Netty to 4.0.36 (CASSANDRA-11567)
 + * Fix PER PARTITION LIMIT for queries requiring post-query ordering 
(CASSANDRA-11556)
 + * Allow instantiation of UDTs and tuples in UDFs (CASSANDRA-10818)
 + * Support UDT in CQLSSTableWriter (CASSANDRA-10624)
 + * Support for non-frozen user-defined types, updating
 +   individual fields of user-defined types (CASSANDRA-7423)
 + * Make LZ4 compression level configurable (CASSANDRA-11051)
 + * Allow per-partition LIMIT clause in CQL (CASSANDRA-7017)
 + * Make custom filtering more extensible with UserExpression (CASSANDRA-11295)
 + * Improve field-checking and error reporting in cassandra.yaml 
(CASSANDRA-10649)
 + * Print CAS stats in nodetool proxyhistograms (CASSANDRA-11507)
 + * More user friendly error when providing an invalid token to nodetool 
(CASSANDRA-9348)
 + * Add static column support to SASI index (CASSANDRA-11183)
 + * Support EQ/PREFIX queries in SASI CONTAINS mode without tokenization 
(CASSANDRA-11434)
 + * Support LIKE operator in prepared statements (CASSANDRA-11456)
 + * Add a command to see if a Materialized View has finished building 
(CASSANDRA-9967)
 + * Log endpoint and port associated with streaming operation (CASSANDRA-8777)
 + * Print sensible units for all log messages (CASSANDRA-9692)
 + * Upgrade Netty to version 4.0.34 (CASSANDRA-11096)
 + * Break the CQL grammar into separate Parser and Lexer (CASSANDRA-11372)
 + * Compress only inter-dc traffic by default (CASSANDRA-)
 + * Add metrics to track write amplification (CASSANDRA-11420)
 + * cassandra-stress: cannot handle "value-less" tables (CASSANDRA-7739)
 + * Add/drop multiple columns in one ALTER TABLE statement (CASSANDRA-10411)
 + * Add require_endpoint_verification opt for internode encryption 
(CASSANDRA-9220)
 + * Add auto import java.util for UDF code block (CASSANDRA-11392)
 + * Add --hex-format option to nodetool getsstables (CASSANDRA-11337)
 + * sstablemetadata should print sstable min/max token (CASSANDRA-7159)
 + * Do not wrap CassandraException in TriggerExecutor (CASSANDRA-9421)
 + * COPY TO should have higher double precision (CASSANDRA-11255)
 + * Stress should exit with non-zero status after failure (CASSANDRA-10340)
 + * Add client to cqlsh SHOW_SESSION (CASSANDRA-8958)
 + * Fix nodetool tablestats keyspace level metrics (CASSANDRA-11226)
 + * 

[03/21] cassandra git commit: Fix paging on DISTINCT queries repeats result when first row in partition changes

2016-05-16 Thread carl
Fix paging on DISTINCT queries repeats result when first row in partition 
changes

patch by Benjamin Lerer; reviewed by Tyler Hobbs for CASSANDRA-11679


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f5baa9c7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f5baa9c7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f5baa9c7

Branch: refs/heads/trunk
Commit: f5baa9c712c283d7f9897dfbb9ca269b2f5a3de3
Parents: fccded5
Author: Benjamin Lerer 
Authored: Fri May 13 21:07:27 2016 +0200
Committer: Benjamin Lerer 
Committed: Fri May 13 21:07:27 2016 +0200

--
 CHANGES.txt  |  1 +
 .../cassandra/service/pager/RangeSliceQueryPager.java| 11 +++
 2 files changed, 12 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5baa9c7/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index edf5aa3..e407140 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.15
+ * Fix paging on DISTINCT queries repeats result when first row in partition 
changes (CASSANDRA-11679)
  * Add option to disable use of severity in DynamicEndpointSnitch 
(CASSANDRA-11737)
  * cqlsh COPY FROM fails for null values with non-prepared statements 
(CASSANDRA-11631)
  * Make cython optional in pylib/setup.py (CASSANDRA-11630)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5baa9c7/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
--
diff --git 
a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java 
b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
index fd14c82..caa146a 100644
--- a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
+++ b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
@@ -96,8 +96,13 @@ public class RangeSliceQueryPager extends AbstractQueryPager
 if (lastReturnedKey == null || !lastReturnedKey.equals(first.key))
 return false;
 
+// If the query is a DISTINCT one we can stop there
+if (isDistinct())
+return true;
+
 // Same as SliceQueryPager, we ignore a deleted column
 Cell firstCell = isReversed() ? lastCell(first.cf) : 
firstNonStaticCell(first.cf);
+
 // If the row was containing only static columns it has already been 
returned and we can skip it.
 if (firstCell == null)
 return true;
@@ -108,6 +113,12 @@ public class RangeSliceQueryPager extends 
AbstractQueryPager
 && firstCell.name().isSameCQL3RowAs(metadata.comparator, 
lastReturnedName);
 }
 
+private boolean isDistinct()
+{
+// As this pager is never used for Thrift queries, checking the 
countCQL3Rows is enough.
+return !command.countCQL3Rows;
+}
+
 protected boolean recordLast(Row last)
 {
 lastReturnedKey = last.key;



[09/21] cassandra git commit: ninja changes for 10979

2016-05-16 Thread carl
ninja changes for 10979


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6e6bde8c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6e6bde8c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6e6bde8c

Branch: refs/heads/cassandra-3.0
Commit: 6e6bde8ca2aad0357705f0c48595cbde4f3bc415
Parents: f5baa9c
Author: Carl Yeksigian 
Authored: Mon May 16 16:43:56 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:43:56 2016 -0400

--
 CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6e6bde8c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index e407140..68f8dd9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -11,6 +11,8 @@
 
 
 2.1.14
+ * Start L0 STCS-compactions even if there is a L0 -> L1 compaction
+   going (CASSANDRA-10979)
  * (cqlsh) Fix potential COPY deadlock when parent process is terminating child
processes (CASSANDRA-11505)
  * Replace sstables on DataTracker before marking them as non-compacting 
during anti-compaction (CASSANDRA-11548)



[04/21] cassandra git commit: Merge branch cassandra-2.1 into cassandra-2.2

2016-05-16 Thread carl
Merge branch cassandra-2.1 into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bf40aa44
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bf40aa44
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bf40aa44

Branch: refs/heads/cassandra-3.7
Commit: bf40aa4439ef7ab53321638d86b58ff50194da31
Parents: 280da18 f5baa9c
Author: Benjamin Lerer 
Authored: Fri May 13 21:19:54 2016 +0200
Committer: Benjamin Lerer 
Committed: Fri May 13 21:20:01 2016 +0200

--

--




[20/21] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.7

2016-05-16 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.7


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3e7a2c8f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3e7a2c8f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3e7a2c8f

Branch: refs/heads/cassandra-3.7
Commit: 3e7a2c8f1f998a0cb1514fbe81d88724e6b2af22
Parents: 13ee50a ca5bf64
Author: Carl Yeksigian 
Authored: Mon May 16 16:46:58 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:46:58 2016 -0400

--

--




[10/21] cassandra git commit: ninja changes for 10979

2016-05-16 Thread carl
ninja changes for 10979


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6e6bde8c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6e6bde8c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6e6bde8c

Branch: refs/heads/cassandra-3.7
Commit: 6e6bde8ca2aad0357705f0c48595cbde4f3bc415
Parents: f5baa9c
Author: Carl Yeksigian 
Authored: Mon May 16 16:43:56 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:43:56 2016 -0400

--
 CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6e6bde8c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index e407140..68f8dd9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -11,6 +11,8 @@
 
 
 2.1.14
+ * Start L0 STCS-compactions even if there is a L0 -> L1 compaction
+   going (CASSANDRA-10979)
  * (cqlsh) Fix potential COPY deadlock when parent process is terminating child
processes (CASSANDRA-11505)
  * Replace sstables on DataTracker before marking them as non-compacting 
during anti-compaction (CASSANDRA-11548)



[12/21] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-05-16 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/330d7d40
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/330d7d40
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/330d7d40

Branch: refs/heads/cassandra-3.0
Commit: 330d7d40be066973e9980ae9875e6efbe1ade362
Parents: bf40aa4 6e6bde8
Author: Carl Yeksigian 
Authored: Mon May 16 16:45:21 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:45:21 2016 -0400

--

--




[06/21] cassandra git commit: Merge branch cassandra-2.1 into cassandra-2.2

2016-05-16 Thread carl
Merge branch cassandra-2.1 into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bf40aa44
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bf40aa44
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bf40aa44

Branch: refs/heads/trunk
Commit: bf40aa4439ef7ab53321638d86b58ff50194da31
Parents: 280da18 f5baa9c
Author: Benjamin Lerer 
Authored: Fri May 13 21:19:54 2016 +0200
Committer: Benjamin Lerer 
Committed: Fri May 13 21:20:01 2016 +0200

--

--




[18/21] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-05-16 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ca5bf64b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ca5bf64b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ca5bf64b

Branch: refs/heads/cassandra-3.0
Commit: ca5bf64bf1e9757ab7f53fb5e4803b5dc8ceaac1
Parents: 14918b7 330d7d4
Author: Carl Yeksigian 
Authored: Mon May 16 16:46:26 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:46:26 2016 -0400

--

--




[16/21] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-05-16 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ca5bf64b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ca5bf64b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ca5bf64b

Branch: refs/heads/cassandra-3.7
Commit: ca5bf64bf1e9757ab7f53fb5e4803b5dc8ceaac1
Parents: 14918b7 330d7d4
Author: Carl Yeksigian 
Authored: Mon May 16 16:46:26 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:46:26 2016 -0400

--

--




[19/21] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.7

2016-05-16 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.7


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3e7a2c8f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3e7a2c8f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3e7a2c8f

Branch: refs/heads/trunk
Commit: 3e7a2c8f1f998a0cb1514fbe81d88724e6b2af22
Parents: 13ee50a ca5bf64
Author: Carl Yeksigian 
Authored: Mon May 16 16:46:58 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:46:58 2016 -0400

--

--




[02/21] cassandra git commit: Fix paging on DISTINCT queries repeats result when first row in partition changes

2016-05-16 Thread carl
Fix paging on DISTINCT queries repeats result when first row in partition 
changes

patch by Benjamin Lerer; reviewed by Tyler Hobbs for CASSANDRA-11679


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f5baa9c7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f5baa9c7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f5baa9c7

Branch: refs/heads/cassandra-3.7
Commit: f5baa9c712c283d7f9897dfbb9ca269b2f5a3de3
Parents: fccded5
Author: Benjamin Lerer 
Authored: Fri May 13 21:07:27 2016 +0200
Committer: Benjamin Lerer 
Committed: Fri May 13 21:07:27 2016 +0200

--
 CHANGES.txt  |  1 +
 .../cassandra/service/pager/RangeSliceQueryPager.java| 11 +++
 2 files changed, 12 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5baa9c7/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index edf5aa3..e407140 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.15
+ * Fix paging on DISTINCT queries repeats result when first row in partition 
changes (CASSANDRA-11679)
  * Add option to disable use of severity in DynamicEndpointSnitch 
(CASSANDRA-11737)
  * cqlsh COPY FROM fails for null values with non-prepared statements 
(CASSANDRA-11631)
  * Make cython optional in pylib/setup.py (CASSANDRA-11630)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5baa9c7/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
--
diff --git 
a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java 
b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
index fd14c82..caa146a 100644
--- a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
+++ b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
@@ -96,8 +96,13 @@ public class RangeSliceQueryPager extends AbstractQueryPager
 if (lastReturnedKey == null || !lastReturnedKey.equals(first.key))
 return false;
 
+// If the query is a DISTINCT one we can stop there
+if (isDistinct())
+return true;
+
 // Same as SliceQueryPager, we ignore a deleted column
 Cell firstCell = isReversed() ? lastCell(first.cf) : 
firstNonStaticCell(first.cf);
+
 // If the row was containing only static columns it has already been 
returned and we can skip it.
 if (firstCell == null)
 return true;
@@ -108,6 +113,12 @@ public class RangeSliceQueryPager extends 
AbstractQueryPager
 && firstCell.name().isSameCQL3RowAs(metadata.comparator, 
lastReturnedName);
 }
 
+private boolean isDistinct()
+{
+// As this pager is never used for Thrift queries, checking the 
countCQL3Rows is enough.
+return !command.countCQL3Rows;
+}
+
 protected boolean recordLast(Row last)
 {
 lastReturnedKey = last.key;



[01/21] cassandra git commit: Fix paging on DISTINCT queries repeats result when first row in partition changes

2016-05-16 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 f5baa9c71 -> 6e6bde8ca
  refs/heads/cassandra-2.2 bf40aa443 -> 330d7d40b
  refs/heads/cassandra-3.0 14918b76f -> ca5bf64bf
  refs/heads/cassandra-3.7 13ee50a51 -> 3e7a2c8f1
  refs/heads/trunk adea6678f -> b84bf68fe


Fix paging on DISTINCT queries repeats result when first row in partition 
changes

patch by Benjamin Lerer; reviewed by Tyler Hobbs for CASSANDRA-11679


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f5baa9c7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f5baa9c7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f5baa9c7

Branch: refs/heads/cassandra-3.0
Commit: f5baa9c712c283d7f9897dfbb9ca269b2f5a3de3
Parents: fccded5
Author: Benjamin Lerer 
Authored: Fri May 13 21:07:27 2016 +0200
Committer: Benjamin Lerer 
Committed: Fri May 13 21:07:27 2016 +0200

--
 CHANGES.txt  |  1 +
 .../cassandra/service/pager/RangeSliceQueryPager.java| 11 +++
 2 files changed, 12 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5baa9c7/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index edf5aa3..e407140 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.15
+ * Fix paging on DISTINCT queries repeats result when first row in partition 
changes (CASSANDRA-11679)
  * Add option to disable use of severity in DynamicEndpointSnitch 
(CASSANDRA-11737)
  * cqlsh COPY FROM fails for null values with non-prepared statements 
(CASSANDRA-11631)
  * Make cython optional in pylib/setup.py (CASSANDRA-11630)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f5baa9c7/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
--
diff --git 
a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java 
b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
index fd14c82..caa146a 100644
--- a/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
+++ b/src/java/org/apache/cassandra/service/pager/RangeSliceQueryPager.java
@@ -96,8 +96,13 @@ public class RangeSliceQueryPager extends AbstractQueryPager
 if (lastReturnedKey == null || !lastReturnedKey.equals(first.key))
 return false;
 
+// If the query is a DISTINCT one we can stop there
+if (isDistinct())
+return true;
+
 // Same as SliceQueryPager, we ignore a deleted column
 Cell firstCell = isReversed() ? lastCell(first.cf) : 
firstNonStaticCell(first.cf);
+
 // If the row was containing only static columns it has already been 
returned and we can skip it.
 if (firstCell == null)
 return true;
@@ -108,6 +113,12 @@ public class RangeSliceQueryPager extends 
AbstractQueryPager
 && firstCell.name().isSameCQL3RowAs(metadata.comparator, 
lastReturnedName);
 }
 
+private boolean isDistinct()
+{
+// As this pager is never used for Thrift queries, checking the 
countCQL3Rows is enough.
+return !command.countCQL3Rows;
+}
+
 protected boolean recordLast(Row last)
 {
 lastReturnedKey = last.key;



[21/21] cassandra git commit: Merge branch 'cassandra-3.7' into trunk

2016-05-16 Thread carl
Merge branch 'cassandra-3.7' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b84bf68f
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b84bf68f
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b84bf68f

Branch: refs/heads/trunk
Commit: b84bf68feeddecef3e9f2eee29c68a809d0b8516
Parents: adea667 3e7a2c8
Author: Carl Yeksigian 
Authored: Mon May 16 16:47:25 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:47:25 2016 -0400

--

--




[14/21] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-05-16 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/330d7d40
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/330d7d40
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/330d7d40

Branch: refs/heads/cassandra-3.7
Commit: 330d7d40be066973e9980ae9875e6efbe1ade362
Parents: bf40aa4 6e6bde8
Author: Carl Yeksigian 
Authored: Mon May 16 16:45:21 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:45:21 2016 -0400

--

--




[07/21] cassandra git commit: ninja changes for 10979

2016-05-16 Thread carl
ninja changes for 10979


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6e6bde8c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6e6bde8c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6e6bde8c

Branch: refs/heads/cassandra-2.2
Commit: 6e6bde8ca2aad0357705f0c48595cbde4f3bc415
Parents: f5baa9c
Author: Carl Yeksigian 
Authored: Mon May 16 16:43:56 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:43:56 2016 -0400

--
 CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6e6bde8c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index e407140..68f8dd9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -11,6 +11,8 @@
 
 
 2.1.14
+ * Start L0 STCS-compactions even if there is a L0 -> L1 compaction
+   going (CASSANDRA-10979)
  * (cqlsh) Fix potential COPY deadlock when parent process is terminating child
processes (CASSANDRA-11505)
  * Replace sstables on DataTracker before marking them as non-compacting 
during anti-compaction (CASSANDRA-11548)



[13/21] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-05-16 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/330d7d40
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/330d7d40
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/330d7d40

Branch: refs/heads/trunk
Commit: 330d7d40be066973e9980ae9875e6efbe1ade362
Parents: bf40aa4 6e6bde8
Author: Carl Yeksigian 
Authored: Mon May 16 16:45:21 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:45:21 2016 -0400

--

--




[05/21] cassandra git commit: Merge branch cassandra-2.1 into cassandra-2.2

2016-05-16 Thread carl
Merge branch cassandra-2.1 into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bf40aa44
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bf40aa44
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bf40aa44

Branch: refs/heads/cassandra-3.0
Commit: bf40aa4439ef7ab53321638d86b58ff50194da31
Parents: 280da18 f5baa9c
Author: Benjamin Lerer 
Authored: Fri May 13 21:19:54 2016 +0200
Committer: Benjamin Lerer 
Committed: Fri May 13 21:20:01 2016 +0200

--

--




[08/21] cassandra git commit: ninja changes for 10979

2016-05-16 Thread carl
ninja changes for 10979


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6e6bde8c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6e6bde8c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6e6bde8c

Branch: refs/heads/cassandra-2.1
Commit: 6e6bde8ca2aad0357705f0c48595cbde4f3bc415
Parents: f5baa9c
Author: Carl Yeksigian 
Authored: Mon May 16 16:43:56 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:43:56 2016 -0400

--
 CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6e6bde8c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index e407140..68f8dd9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -11,6 +11,8 @@
 
 
 2.1.14
+ * Start L0 STCS-compactions even if there is a L0 -> L1 compaction
+   going (CASSANDRA-10979)
  * (cqlsh) Fix potential COPY deadlock when parent process is terminating child
processes (CASSANDRA-11505)
  * Replace sstables on DataTracker before marking them as non-compacting 
during anti-compaction (CASSANDRA-11548)



[15/21] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-05-16 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/330d7d40
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/330d7d40
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/330d7d40

Branch: refs/heads/cassandra-2.2
Commit: 330d7d40be066973e9980ae9875e6efbe1ade362
Parents: bf40aa4 6e6bde8
Author: Carl Yeksigian 
Authored: Mon May 16 16:45:21 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:45:21 2016 -0400

--

--




[17/21] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-05-16 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ca5bf64b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ca5bf64b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ca5bf64b

Branch: refs/heads/trunk
Commit: ca5bf64bf1e9757ab7f53fb5e4803b5dc8ceaac1
Parents: 14918b7 330d7d4
Author: Carl Yeksigian 
Authored: Mon May 16 16:46:26 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:46:26 2016 -0400

--

--




[11/21] cassandra git commit: ninja changes for 10979

2016-05-16 Thread carl
ninja changes for 10979


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6e6bde8c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6e6bde8c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6e6bde8c

Branch: refs/heads/trunk
Commit: 6e6bde8ca2aad0357705f0c48595cbde4f3bc415
Parents: f5baa9c
Author: Carl Yeksigian 
Authored: Mon May 16 16:43:56 2016 -0400
Committer: Carl Yeksigian 
Committed: Mon May 16 16:43:56 2016 -0400

--
 CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6e6bde8c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index e407140..68f8dd9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -11,6 +11,8 @@
 
 
 2.1.14
+ * Start L0 STCS-compactions even if there is a L0 -> L1 compaction
+   going (CASSANDRA-10979)
  * (cqlsh) Fix potential COPY deadlock when parent process is terminating child
processes (CASSANDRA-11505)
  * Replace sstables on DataTracker before marking them as non-compacting 
during anti-compaction (CASSANDRA-11548)



[1/3] cassandra git commit: Allow LWT operation on static column with only partition keys

2016-06-14 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 72acbcd00 -> 1d2d0749a
  refs/heads/cassandra-2.2 05f8a008f -> 52a827b4d


Allow LWT operation on static column with only partition keys

Patch by Carl Yeksigian, reviewed by Benjamin Lerer for CASSANDRA-10532


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1d2d0749
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1d2d0749
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1d2d0749

Branch: refs/heads/cassandra-2.1
Commit: 1d2d0749a8b72c4c8cdd5b85b210157e8d7d6a41
Parents: 72acbcd
Author: Carl Yeksigian 
Authored: Tue Jun 14 08:32:26 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 08:32:26 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  37 +++---
 .../cql3/statements/ModificationStatement.java  |  14 ++-
 .../operations/InsertUpdateIfConditionTest.java | 113 +++
 4 files changed, 150 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index ebcc90c..7d70902 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.15
+ * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
  * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
  * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid corrupting 
SSL connections (CASSANDRA-11749)
  * Updated cqlsh Python driver to fix DESCRIBE problem for legacy tables 
(CASSANDRA-11055)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
index 33c61e7..d8fa467 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
@@ -50,15 +50,6 @@ public class DeleteStatement extends ModificationStatement
 {
 List deletions = getOperations();
 
-if (prefix.size() < cfm.clusteringColumns().size() && 
!deletions.isEmpty())
-{
-// In general, we can't delete specific columns if not all 
clustering columns have been specified.
-// However, if we delete only static colums, it's fine since we 
won't really use the prefix anyway.
-for (Operation deletion : deletions)
-if (!deletion.column.isStatic())
-throw new InvalidRequestException(String.format("Primary 
key column '%s' must be specified in order to delete column '%s'", 
getFirstEmptyKey().name, deletion.column.name));
-}
-
 if (deletions.isEmpty())
 {
 // We delete the slice selected by the prefix.
@@ -88,19 +79,39 @@ public class DeleteStatement extends ModificationStatement
 
 protected void validateWhereClauseForConditions() throws 
InvalidRequestException
 {
-Iterator iterator = 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
+boolean onlyHasConditionsOnStaticColumns = hasStaticConditions() && 
!hasRegularConditions();
+
+// In general, we can't delete specific columns if not all clustering 
columns have been specified.
+// However, if we delete only static colums, it's fine since we won't 
really use the prefix anyway.
+Iterator iterator = appliesOnlyToStaticColumns()
+  ? 
cfm.partitionKeyColumns().iterator()
+  : 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
 while (iterator.hasNext())
 {
 ColumnDefinition def = iterator.next();
 Restriction restriction = processedKeys.get(def.name);
 if (restriction == null || !(restriction.isEQ() || 
restriction.isIN()))
 {
+if (onlyHasConditionsOnStaticColumns)
+{
+for (Operation oper : getOperations())
+{
+if (!oper.column.isStatic())
+{
+throw new 
InvalidRequestException(String.format("Primary key column '%s' must be 
specified in order to delete 

[3/3] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-06-14 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/52a827b4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/52a827b4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/52a827b4

Branch: refs/heads/cassandra-2.2
Commit: 52a827b4d22edc4506adfbe83345216bc725d57f
Parents: 05f8a00 1d2d074
Author: Carl Yeksigian 
Authored: Tue Jun 14 08:55:58 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 08:55:58 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  37 +++---
 .../cql3/statements/ModificationStatement.java  |  14 ++-
 .../operations/InsertUpdateIfConditionTest.java | 113 +++
 4 files changed, 150 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/CHANGES.txt
--
diff --cc CHANGES.txt
index 491f72a,7d70902..d0ca37f
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,32 -1,8 +1,33 @@@
 -2.1.15
 +2.2.7
 + * StorageService shutdown hook should use a volatile variable 
(CASSANDRA-11984)
 + * Persist local metadata earlier in startup sequence (CASSANDRA-11742)
 + * Run CommitLog tests with different compression settings (CASSANDRA-9039)
 + * cqlsh: fix tab completion for case-sensitive identifiers (CASSANDRA-11664)
 + * Avoid showing estimated key as -1 in tablestats (CASSANDRA-11587)
 + * Fix possible race condition in CommitLog.recover (CASSANDRA-11743)
 + * Enable client encryption in sstableloader with cli options 
(CASSANDRA-11708)
 + * Possible memory leak in NIODataInputStream (CASSANDRA-11867)
 + * Fix commit log replay after out-of-order flush completion (CASSANDRA-9669)
 + * Add seconds to cqlsh tracing session duration (CASSANDRA-11753)
 + * Prohibit Reverse Counter type as part of the PK (CASSANDRA-9395)
 + * cqlsh: correctly handle non-ascii chars in error messages (CASSANDRA-11626)
 + * Exit JVM if JMX server fails to startup (CASSANDRA-11540)
 + * Produce a heap dump when exiting on OOM (CASSANDRA-9861)
 + * Avoid read repairing purgeable tombstones on range slices (CASSANDRA-11427)
 + * Restore ability to filter on clustering columns when using a 2i 
(CASSANDRA-11510)
 + * JSON datetime formatting needs timezone (CASSANDRA-11137)
 + * Fix is_dense recalculation for Thrift-updated tables (CASSANDRA-11502)
 + * Remove unnescessary file existence check during anticompaction 
(CASSANDRA-11660)
 + * Add missing files to debian packages (CASSANDRA-11642)
 + * Avoid calling Iterables::concat in loops during 
ModificationStatement::getFunctions (CASSANDRA-11621)
 + * cqlsh: COPY FROM should use regular inserts for single statement batches 
and
 +   report errors correctly if workers processes crash on initialization 
(CASSANDRA-11474)
 + * Always close cluster with connection in CqlRecordWriter (CASSANDRA-11553)
 + * Fix slice queries on ordered COMPACT tables (CASSANDRA-10988)
 +Merged from 2.1:
+  * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
   * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
   * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid 
corrupting SSL connections (CASSANDRA-11749)
 - * Updated cqlsh Python driver to fix DESCRIBE problem for legacy tables 
(CASSANDRA-11055)
   * cqlsh: apply current keyspace to source command (CASSANDRA-11152)
   * Backport CASSANDRA-11578 (CASSANDRA-11750)
   * Clear out parent repair session if repair coordinator dies 
(CASSANDRA-11824)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
--



[2/3] cassandra git commit: Allow LWT operation on static column with only partition keys

2016-06-14 Thread carl
Allow LWT operation on static column with only partition keys

Patch by Carl Yeksigian, reviewed by Benjamin Lerer for CASSANDRA-10532


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1d2d0749
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1d2d0749
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1d2d0749

Branch: refs/heads/cassandra-2.2
Commit: 1d2d0749a8b72c4c8cdd5b85b210157e8d7d6a41
Parents: 72acbcd
Author: Carl Yeksigian 
Authored: Tue Jun 14 08:32:26 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 08:32:26 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  37 +++---
 .../cql3/statements/ModificationStatement.java  |  14 ++-
 .../operations/InsertUpdateIfConditionTest.java | 113 +++
 4 files changed, 150 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index ebcc90c..7d70902 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.15
+ * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
  * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
  * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid corrupting 
SSL connections (CASSANDRA-11749)
  * Updated cqlsh Python driver to fix DESCRIBE problem for legacy tables 
(CASSANDRA-11055)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
index 33c61e7..d8fa467 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
@@ -50,15 +50,6 @@ public class DeleteStatement extends ModificationStatement
 {
 List deletions = getOperations();
 
-if (prefix.size() < cfm.clusteringColumns().size() && 
!deletions.isEmpty())
-{
-// In general, we can't delete specific columns if not all 
clustering columns have been specified.
-// However, if we delete only static colums, it's fine since we 
won't really use the prefix anyway.
-for (Operation deletion : deletions)
-if (!deletion.column.isStatic())
-throw new InvalidRequestException(String.format("Primary 
key column '%s' must be specified in order to delete column '%s'", 
getFirstEmptyKey().name, deletion.column.name));
-}
-
 if (deletions.isEmpty())
 {
 // We delete the slice selected by the prefix.
@@ -88,19 +79,39 @@ public class DeleteStatement extends ModificationStatement
 
 protected void validateWhereClauseForConditions() throws 
InvalidRequestException
 {
-Iterator iterator = 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
+boolean onlyHasConditionsOnStaticColumns = hasStaticConditions() && 
!hasRegularConditions();
+
+// In general, we can't delete specific columns if not all clustering 
columns have been specified.
+// However, if we delete only static colums, it's fine since we won't 
really use the prefix anyway.
+Iterator iterator = appliesOnlyToStaticColumns()
+  ? 
cfm.partitionKeyColumns().iterator()
+  : 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
 while (iterator.hasNext())
 {
 ColumnDefinition def = iterator.next();
 Restriction restriction = processedKeys.get(def.name);
 if (restriction == null || !(restriction.isEQ() || 
restriction.isIN()))
 {
+if (onlyHasConditionsOnStaticColumns)
+{
+for (Operation oper : getOperations())
+{
+if (!oper.column.isStatic())
+{
+throw new 
InvalidRequestException(String.format("Primary key column '%s' must be 
specified in order to delete column '%s'",
+

[2/7] cassandra git commit: Allow LWT operation on static column with only partition keys

2016-06-14 Thread carl
Allow LWT operation on static column with only partition keys

Patch by Carl Yeksigian, reviewed by Benjamin Lerer for CASSANDRA-10532


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1d2d0749
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1d2d0749
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1d2d0749

Branch: refs/heads/trunk
Commit: 1d2d0749a8b72c4c8cdd5b85b210157e8d7d6a41
Parents: 72acbcd
Author: Carl Yeksigian 
Authored: Tue Jun 14 08:32:26 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 08:32:26 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  37 +++---
 .../cql3/statements/ModificationStatement.java  |  14 ++-
 .../operations/InsertUpdateIfConditionTest.java | 113 +++
 4 files changed, 150 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index ebcc90c..7d70902 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.15
+ * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
  * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
  * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid corrupting 
SSL connections (CASSANDRA-11749)
  * Updated cqlsh Python driver to fix DESCRIBE problem for legacy tables 
(CASSANDRA-11055)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
index 33c61e7..d8fa467 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
@@ -50,15 +50,6 @@ public class DeleteStatement extends ModificationStatement
 {
 List deletions = getOperations();
 
-if (prefix.size() < cfm.clusteringColumns().size() && 
!deletions.isEmpty())
-{
-// In general, we can't delete specific columns if not all 
clustering columns have been specified.
-// However, if we delete only static colums, it's fine since we 
won't really use the prefix anyway.
-for (Operation deletion : deletions)
-if (!deletion.column.isStatic())
-throw new InvalidRequestException(String.format("Primary 
key column '%s' must be specified in order to delete column '%s'", 
getFirstEmptyKey().name, deletion.column.name));
-}
-
 if (deletions.isEmpty())
 {
 // We delete the slice selected by the prefix.
@@ -88,19 +79,39 @@ public class DeleteStatement extends ModificationStatement
 
 protected void validateWhereClauseForConditions() throws 
InvalidRequestException
 {
-Iterator iterator = 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
+boolean onlyHasConditionsOnStaticColumns = hasStaticConditions() && 
!hasRegularConditions();
+
+// In general, we can't delete specific columns if not all clustering 
columns have been specified.
+// However, if we delete only static colums, it's fine since we won't 
really use the prefix anyway.
+Iterator iterator = appliesOnlyToStaticColumns()
+  ? 
cfm.partitionKeyColumns().iterator()
+  : 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
 while (iterator.hasNext())
 {
 ColumnDefinition def = iterator.next();
 Restriction restriction = processedKeys.get(def.name);
 if (restriction == null || !(restriction.isEQ() || 
restriction.isIN()))
 {
+if (onlyHasConditionsOnStaticColumns)
+{
+for (Operation oper : getOperations())
+{
+if (!oper.column.isStatic())
+{
+throw new 
InvalidRequestException(String.format("Primary key column '%s' must be 
specified in order to delete column '%s'",
+

[3/7] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-06-14 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/52a827b4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/52a827b4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/52a827b4

Branch: refs/heads/trunk
Commit: 52a827b4d22edc4506adfbe83345216bc725d57f
Parents: 05f8a00 1d2d074
Author: Carl Yeksigian 
Authored: Tue Jun 14 08:55:58 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 08:55:58 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  37 +++---
 .../cql3/statements/ModificationStatement.java  |  14 ++-
 .../operations/InsertUpdateIfConditionTest.java | 113 +++
 4 files changed, 150 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/CHANGES.txt
--
diff --cc CHANGES.txt
index 491f72a,7d70902..d0ca37f
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,32 -1,8 +1,33 @@@
 -2.1.15
 +2.2.7
 + * StorageService shutdown hook should use a volatile variable 
(CASSANDRA-11984)
 + * Persist local metadata earlier in startup sequence (CASSANDRA-11742)
 + * Run CommitLog tests with different compression settings (CASSANDRA-9039)
 + * cqlsh: fix tab completion for case-sensitive identifiers (CASSANDRA-11664)
 + * Avoid showing estimated key as -1 in tablestats (CASSANDRA-11587)
 + * Fix possible race condition in CommitLog.recover (CASSANDRA-11743)
 + * Enable client encryption in sstableloader with cli options 
(CASSANDRA-11708)
 + * Possible memory leak in NIODataInputStream (CASSANDRA-11867)
 + * Fix commit log replay after out-of-order flush completion (CASSANDRA-9669)
 + * Add seconds to cqlsh tracing session duration (CASSANDRA-11753)
 + * Prohibit Reverse Counter type as part of the PK (CASSANDRA-9395)
 + * cqlsh: correctly handle non-ascii chars in error messages (CASSANDRA-11626)
 + * Exit JVM if JMX server fails to startup (CASSANDRA-11540)
 + * Produce a heap dump when exiting on OOM (CASSANDRA-9861)
 + * Avoid read repairing purgeable tombstones on range slices (CASSANDRA-11427)
 + * Restore ability to filter on clustering columns when using a 2i 
(CASSANDRA-11510)
 + * JSON datetime formatting needs timezone (CASSANDRA-11137)
 + * Fix is_dense recalculation for Thrift-updated tables (CASSANDRA-11502)
 + * Remove unnescessary file existence check during anticompaction 
(CASSANDRA-11660)
 + * Add missing files to debian packages (CASSANDRA-11642)
 + * Avoid calling Iterables::concat in loops during 
ModificationStatement::getFunctions (CASSANDRA-11621)
 + * cqlsh: COPY FROM should use regular inserts for single statement batches 
and
 +   report errors correctly if workers processes crash on initialization 
(CASSANDRA-11474)
 + * Always close cluster with connection in CqlRecordWriter (CASSANDRA-11553)
 + * Fix slice queries on ordered COMPACT tables (CASSANDRA-10988)
 +Merged from 2.1:
+  * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
   * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
   * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid 
corrupting SSL connections (CASSANDRA-11749)
 - * Updated cqlsh Python driver to fix DESCRIBE problem for legacy tables 
(CASSANDRA-11055)
   * cqlsh: apply current keyspace to source command (CASSANDRA-11152)
   * Backport CASSANDRA-11578 (CASSANDRA-11750)
   * Clear out parent repair session if repair coordinator dies 
(CASSANDRA-11824)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
--



[4/7] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-06-14 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/52a827b4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/52a827b4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/52a827b4

Branch: refs/heads/cassandra-3.0
Commit: 52a827b4d22edc4506adfbe83345216bc725d57f
Parents: 05f8a00 1d2d074
Author: Carl Yeksigian 
Authored: Tue Jun 14 08:55:58 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 08:55:58 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  37 +++---
 .../cql3/statements/ModificationStatement.java  |  14 ++-
 .../operations/InsertUpdateIfConditionTest.java | 113 +++
 4 files changed, 150 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/CHANGES.txt
--
diff --cc CHANGES.txt
index 491f72a,7d70902..d0ca37f
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,32 -1,8 +1,33 @@@
 -2.1.15
 +2.2.7
 + * StorageService shutdown hook should use a volatile variable 
(CASSANDRA-11984)
 + * Persist local metadata earlier in startup sequence (CASSANDRA-11742)
 + * Run CommitLog tests with different compression settings (CASSANDRA-9039)
 + * cqlsh: fix tab completion for case-sensitive identifiers (CASSANDRA-11664)
 + * Avoid showing estimated key as -1 in tablestats (CASSANDRA-11587)
 + * Fix possible race condition in CommitLog.recover (CASSANDRA-11743)
 + * Enable client encryption in sstableloader with cli options 
(CASSANDRA-11708)
 + * Possible memory leak in NIODataInputStream (CASSANDRA-11867)
 + * Fix commit log replay after out-of-order flush completion (CASSANDRA-9669)
 + * Add seconds to cqlsh tracing session duration (CASSANDRA-11753)
 + * Prohibit Reverse Counter type as part of the PK (CASSANDRA-9395)
 + * cqlsh: correctly handle non-ascii chars in error messages (CASSANDRA-11626)
 + * Exit JVM if JMX server fails to startup (CASSANDRA-11540)
 + * Produce a heap dump when exiting on OOM (CASSANDRA-9861)
 + * Avoid read repairing purgeable tombstones on range slices (CASSANDRA-11427)
 + * Restore ability to filter on clustering columns when using a 2i 
(CASSANDRA-11510)
 + * JSON datetime formatting needs timezone (CASSANDRA-11137)
 + * Fix is_dense recalculation for Thrift-updated tables (CASSANDRA-11502)
 + * Remove unnescessary file existence check during anticompaction 
(CASSANDRA-11660)
 + * Add missing files to debian packages (CASSANDRA-11642)
 + * Avoid calling Iterables::concat in loops during 
ModificationStatement::getFunctions (CASSANDRA-11621)
 + * cqlsh: COPY FROM should use regular inserts for single statement batches 
and
 +   report errors correctly if workers processes crash on initialization 
(CASSANDRA-11474)
 + * Always close cluster with connection in CqlRecordWriter (CASSANDRA-11553)
 + * Fix slice queries on ordered COMPACT tables (CASSANDRA-10988)
 +Merged from 2.1:
+  * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
   * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
   * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid 
corrupting SSL connections (CASSANDRA-11749)
 - * Updated cqlsh Python driver to fix DESCRIBE problem for legacy tables 
(CASSANDRA-11055)
   * cqlsh: apply current keyspace to source command (CASSANDRA-11152)
   * Backport CASSANDRA-11578 (CASSANDRA-11750)
   * Clear out parent repair session if repair coordinator dies 
(CASSANDRA-11824)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/52a827b4/test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
--



[5/7] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-06-14 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a91219e1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a91219e1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a91219e1

Branch: refs/heads/trunk
Commit: a91219e12459c86899ab59f8f6706afbbdbc5f89
Parents: 0d5984b 52a827b
Author: Carl Yeksigian 
Authored: Tue Jun 14 10:34:13 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 10:34:13 2016 -0400

--
 CHANGES.txt |   1 +
 .../restrictions/StatementRestrictions.java |   8 +-
 .../cql3/statements/DeleteStatement.java|  15 ++-
 .../operations/InsertUpdateIfConditionTest.java | 120 ++-
 4 files changed, 132 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a91219e1/CHANGES.txt
--
diff --cc CHANGES.txt
index 8a04077,d0ca37f..2c42c94
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,29 -1,5 +1,30 @@@
 -2.2.7
 +3.0.8
 + * Add TimeWindowCompactionStrategy (CASSANDRA-9666)
 +Merged from 2.2:
   * StorageService shutdown hook should use a volatile variable 
(CASSANDRA-11984)
 +Merged from 2.1:
++ * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
 + * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
 + * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid 
corrupting SSL connections (CASSANDRA-11749)
 +
 +
 +3.0.7
 + * Fix legacy serialization of Thrift-generated non-compound range tombstones
 +   when communicating with 2.x nodes (CASSANDRA-11930)
 + * Fix Directories instantiations where CFS.initialDirectories should be used 
(CASSANDRA-11849)
 + * Avoid referencing DatabaseDescriptor in AbstractType (CASSANDRA-11912)
 + * Fix sstables not being protected from removal during index build 
(CASSANDRA-11905)
 + * cqlsh: Suppress stack trace from Read/WriteFailures (CASSANDRA-11032)
 + * Remove unneeded code to repair index summaries that have
 +   been improperly down-sampled (CASSANDRA-11127)
 + * Avoid WriteTimeoutExceptions during commit log replay due to materialized
 +   view lock contention (CASSANDRA-11891)
 + * Prevent OOM failures on SSTable corruption, improve tests for corruption 
detection (CASSANDRA-9530)
 + * Use CFS.initialDirectories when clearing snapshots (CASSANDRA-11705)
 + * Allow compaction strategies to disable early open (CASSANDRA-11754)
 + * Refactor Materialized View code (CASSANDRA-11475)
 + * Update Java Driver (CASSANDRA-11615)
 +Merged from 2.2:
   * Persist local metadata earlier in startup sequence (CASSANDRA-11742)
   * Run CommitLog tests with different compression settings (CASSANDRA-9039)
   * cqlsh: fix tab completion for case-sensitive identifiers (CASSANDRA-11664)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a91219e1/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
index 6ee554e,5b7c58d..ae0c9c4
--- a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
+++ b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
@@@ -773,19 -601,8 +773,19 @@@ public final class StatementRestriction
  checkFalse(selectsOnlyStaticColumns, "Queries using 2ndary indexes 
don't support selecting only static columns");
  }
  
 -public void reverse()
 +/**
 + * Checks that all the primary key columns (partition key and clustering 
columns) are restricted by an equality
 + * relation ('=' or 'IN').
 + *
 + * @return true if all the primary key columns are 
restricted by an equality relation.
 + */
 +public boolean hasAllPKColumnsRestrictedByEqualities()
  {
 -clusteringColumnsRestrictions = new 
ReversedPrimaryKeyRestrictions(clusteringColumnsRestrictions);
 +return !isPartitionKeyRestrictionsOnToken()
- && !hasUnrestrictedPartitionKeyComponents()
- && (partitionKeyRestrictions.isEQ() || 
partitionKeyRestrictions.isIN())
- && !hasUnrestrictedClusteringColumns()
- && (clusteringColumnsRestrictions.isEQ() || 
clusteringColumnsRestrictions.isIN());
++   && !hasUnrestrictedPartitionKeyComponents()
++   && (partitionKeyRestrictions.isEQ() || 
partitionKeyRestrictions.isIN())
++   && !hasUnrestrictedClusteringColumns()
++   && (clusteringColum

[1/7] cassandra git commit: Allow LWT operation on static column with only partition keys

2016-06-14 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 0d5984b9d -> a91219e12
  refs/heads/trunk b2352189f -> bdd8e8ade


Allow LWT operation on static column with only partition keys

Patch by Carl Yeksigian, reviewed by Benjamin Lerer for CASSANDRA-10532


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1d2d0749
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1d2d0749
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1d2d0749

Branch: refs/heads/cassandra-3.0
Commit: 1d2d0749a8b72c4c8cdd5b85b210157e8d7d6a41
Parents: 72acbcd
Author: Carl Yeksigian 
Authored: Tue Jun 14 08:32:26 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 08:32:26 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  37 +++---
 .../cql3/statements/ModificationStatement.java  |  14 ++-
 .../operations/InsertUpdateIfConditionTest.java | 113 +++
 4 files changed, 150 insertions(+), 15 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index ebcc90c..7d70902 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.15
+ * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
  * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
  * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid corrupting 
SSL connections (CASSANDRA-11749)
  * Updated cqlsh Python driver to fix DESCRIBE problem for legacy tables 
(CASSANDRA-11055)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1d2d0749/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
index 33c61e7..d8fa467 100644
--- a/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
@@ -50,15 +50,6 @@ public class DeleteStatement extends ModificationStatement
 {
 List deletions = getOperations();
 
-if (prefix.size() < cfm.clusteringColumns().size() && 
!deletions.isEmpty())
-{
-// In general, we can't delete specific columns if not all 
clustering columns have been specified.
-// However, if we delete only static colums, it's fine since we 
won't really use the prefix anyway.
-for (Operation deletion : deletions)
-if (!deletion.column.isStatic())
-throw new InvalidRequestException(String.format("Primary 
key column '%s' must be specified in order to delete column '%s'", 
getFirstEmptyKey().name, deletion.column.name));
-}
-
 if (deletions.isEmpty())
 {
 // We delete the slice selected by the prefix.
@@ -88,19 +79,39 @@ public class DeleteStatement extends ModificationStatement
 
 protected void validateWhereClauseForConditions() throws 
InvalidRequestException
 {
-Iterator iterator = 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
+boolean onlyHasConditionsOnStaticColumns = hasStaticConditions() && 
!hasRegularConditions();
+
+// In general, we can't delete specific columns if not all clustering 
columns have been specified.
+// However, if we delete only static colums, it's fine since we won't 
really use the prefix anyway.
+Iterator iterator = appliesOnlyToStaticColumns()
+  ? 
cfm.partitionKeyColumns().iterator()
+  : 
Iterators.concat(cfm.partitionKeyColumns().iterator(), 
cfm.clusteringColumns().iterator());
 while (iterator.hasNext())
 {
 ColumnDefinition def = iterator.next();
 Restriction restriction = processedKeys.get(def.name);
 if (restriction == null || !(restriction.isEQ() || 
restriction.isIN()))
 {
+if (onlyHasConditionsOnStaticColumns)
+{
+for (Operation oper : getOperations())
+{
+if (!oper.column.isStatic())
+{
+throw new 
InvalidRequestException(String.format("Primary key column '%s' must be 
specified in order to delete 

[7/7] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

2016-06-14 Thread carl
Merge branch 'cassandra-3.0' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bdd8e8ad
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bdd8e8ad
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bdd8e8ad

Branch: refs/heads/trunk
Commit: bdd8e8ade7914a6ab04297763b4329102f6fcfc9
Parents: b235218 a91219e
Author: Carl Yeksigian 
Authored: Tue Jun 14 10:35:09 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 10:35:09 2016 -0400

--
 CHANGES.txt |   1 +
 .../cql3/statements/DeleteStatement.java|  15 ++-
 .../operations/InsertUpdateIfConditionTest.java | 120 ++-
 3 files changed, 128 insertions(+), 8 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdd8e8ad/CHANGES.txt
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdd8e8ad/src/java/org/apache/cassandra/cql3/statements/DeleteStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/bdd8e8ad/test/unit/org/apache/cassandra/cql3/validation/operations/InsertUpdateIfConditionTest.java
--



[6/7] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-06-14 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a91219e1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a91219e1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a91219e1

Branch: refs/heads/cassandra-3.0
Commit: a91219e12459c86899ab59f8f6706afbbdbc5f89
Parents: 0d5984b 52a827b
Author: Carl Yeksigian 
Authored: Tue Jun 14 10:34:13 2016 -0400
Committer: Carl Yeksigian 
Committed: Tue Jun 14 10:34:13 2016 -0400

--
 CHANGES.txt |   1 +
 .../restrictions/StatementRestrictions.java |   8 +-
 .../cql3/statements/DeleteStatement.java|  15 ++-
 .../operations/InsertUpdateIfConditionTest.java | 120 ++-
 4 files changed, 132 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a91219e1/CHANGES.txt
--
diff --cc CHANGES.txt
index 8a04077,d0ca37f..2c42c94
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,29 -1,5 +1,30 @@@
 -2.2.7
 +3.0.8
 + * Add TimeWindowCompactionStrategy (CASSANDRA-9666)
 +Merged from 2.2:
   * StorageService shutdown hook should use a volatile variable 
(CASSANDRA-11984)
 +Merged from 2.1:
++ * Allow LWT operation on static column with only partition keys 
(CASSANDRA-10532)
 + * Create interval tree over canonical sstables to avoid missing sstables 
during streaming (CASSANDRA-11886)
 + * cqlsh COPY FROM: shutdown parent cluster after forking, to avoid 
corrupting SSL connections (CASSANDRA-11749)
 +
 +
 +3.0.7
 + * Fix legacy serialization of Thrift-generated non-compound range tombstones
 +   when communicating with 2.x nodes (CASSANDRA-11930)
 + * Fix Directories instantiations where CFS.initialDirectories should be used 
(CASSANDRA-11849)
 + * Avoid referencing DatabaseDescriptor in AbstractType (CASSANDRA-11912)
 + * Fix sstables not being protected from removal during index build 
(CASSANDRA-11905)
 + * cqlsh: Suppress stack trace from Read/WriteFailures (CASSANDRA-11032)
 + * Remove unneeded code to repair index summaries that have
 +   been improperly down-sampled (CASSANDRA-11127)
 + * Avoid WriteTimeoutExceptions during commit log replay due to materialized
 +   view lock contention (CASSANDRA-11891)
 + * Prevent OOM failures on SSTable corruption, improve tests for corruption 
detection (CASSANDRA-9530)
 + * Use CFS.initialDirectories when clearing snapshots (CASSANDRA-11705)
 + * Allow compaction strategies to disable early open (CASSANDRA-11754)
 + * Refactor Materialized View code (CASSANDRA-11475)
 + * Update Java Driver (CASSANDRA-11615)
 +Merged from 2.2:
   * Persist local metadata earlier in startup sequence (CASSANDRA-11742)
   * Run CommitLog tests with different compression settings (CASSANDRA-9039)
   * cqlsh: fix tab completion for case-sensitive identifiers (CASSANDRA-11664)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a91219e1/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
index 6ee554e,5b7c58d..ae0c9c4
--- a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
+++ b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java
@@@ -773,19 -601,8 +773,19 @@@ public final class StatementRestriction
  checkFalse(selectsOnlyStaticColumns, "Queries using 2ndary indexes 
don't support selecting only static columns");
  }
  
 -public void reverse()
 +/**
 + * Checks that all the primary key columns (partition key and clustering 
columns) are restricted by an equality
 + * relation ('=' or 'IN').
 + *
 + * @return true if all the primary key columns are 
restricted by an equality relation.
 + */
 +public boolean hasAllPKColumnsRestrictedByEqualities()
  {
 -clusteringColumnsRestrictions = new 
ReversedPrimaryKeyRestrictions(clusteringColumnsRestrictions);
 +return !isPartitionKeyRestrictionsOnToken()
- && !hasUnrestrictedPartitionKeyComponents()
- && (partitionKeyRestrictions.isEQ() || 
partitionKeyRestrictions.isIN())
- && !hasUnrestrictedClusteringColumns()
- && (clusteringColumnsRestrictions.isEQ() || 
clusteringColumnsRestrictions.isIN());
++   && !hasUnrestrictedPartitionKeyComponents()
++   && (partitionKeyRestrictions.isEQ() || 
partitionKeyRestrictions.isIN())
++   && !hasUnrestrictedClusteringColumns()
++   && (c

[6/6] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-01-06 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/fa1707fa
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/fa1707fa
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/fa1707fa

Branch: refs/heads/trunk
Commit: fa1707fa6859d6391ae7a33ca69c634ba12d83e5
Parents: 786d676 91aeb26
Author: Carl Yeksigian 
Authored: Wed Jan 6 11:49:33 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 11:49:33 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--




[1/6] cassandra git commit: MV timestamp should be the maximum of the values, not the minimum

2016-01-06 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 f937c8bee -> 70c08ece5
  refs/heads/cassandra-3.3 7fbc39b74 -> 91aeb2637
  refs/heads/trunk 786d67675 -> fa1707fa6


MV timestamp should be the maximum of the values, not the minimum

patch by Carl Yeksigian; reviewed by Jake Luciani for CASSANDRA-10910


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/70c08ece
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/70c08ece
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/70c08ece

Branch: refs/heads/cassandra-3.0
Commit: 70c08ece563731cd546d24541f225c888f4d02f5
Parents: f937c8b
Author: Carl Yeksigian 
Authored: Wed Jan 6 10:41:47 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 10:42:36 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/70c08ece/src/java/org/apache/cassandra/db/view/TemporalRow.java
--
diff --git a/src/java/org/apache/cassandra/db/view/TemporalRow.java 
b/src/java/org/apache/cassandra/db/view/TemporalRow.java
index 8898857..8ee310d 100644
--- a/src/java/org/apache/cassandra/db/view/TemporalRow.java
+++ b/src/java/org/apache/cassandra/db/view/TemporalRow.java
@@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -279,9 +280,7 @@ public class TemporalRow
 this.nowInSec = nowInSec;
 
 LivenessInfo liveness = row.primaryKeyLivenessInfo();
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(viewClusteringLocalDeletionTime, 
row.deletion().time().localDeletionTime(), NO_DELETION_TIME);
-this.viewClusteringTimestamp = minValueIfSet(viewClusteringTimestamp, 
liveness.timestamp(), NO_TIMESTAMP);
-this.viewClusteringTtl = minValueIfSet(viewClusteringTtl, 
liveness.ttl(), NO_TTL);
+updateLiveness(liveness.ttl(), liveness.timestamp(), 
row.deletion().time().localDeletionTime());
 
 List clusteringDefs = 
baseCfs.metadata.clusteringColumns();
 clusteringColumns = new HashMap<>();
@@ -295,6 +294,31 @@ public class TemporalRow
 }
 }
 
+/*
+ * PK ts:5, ttl:1, deletion: 2
+ * Col ts:4, ttl:2, deletion: 3
+ *
+ * TTL use min, since it expires at the lowest time which we are expiring. 
If we have the above values, we
+ * would want to return 1, since the base row expires in 1 second.
+ *
+ * Timestamp uses max, as this is the time that the row has been written 
to the view. See CASSANDRA-10910.
+ *
+ * Local Deletion Time should use max, as this deletion will cover all 
previous values written.
+ */
+@SuppressWarnings("unchecked")
+private void updateLiveness(int ttl, long timestamp, int localDeletionTime)
+{
+// We are returning whichever is higher from valueIfSet
+// Natural order will return the max: 1.compareTo(2) < 0, so 2 is 
returned
+// Reverse order will return the min: 1.compareTo(2) > 0, so 1 is 
returned
+final Comparator max = Comparator.naturalOrder();
+final Comparator min = Comparator.reverseOrder();
+
+this.viewClusteringTtl = valueIfSet(viewClusteringTtl, ttl, NO_TTL, 
min);
+this.viewClusteringTimestamp = valueIfSet(viewClusteringTimestamp, 
timestamp, NO_TIMESTAMP, max);
+this.viewClusteringLocalDeletionTime = 
valueIfSet(viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME, max);
+}
+
 @Override
 public String toString()
 {
@@ -351,30 +375,33 @@ public class TemporalRow
 // If this column is part of the view's primary keys
 if (viewPrimaryKey.contains(identifier))
 {
-this.viewClusteringTtl = minValueIfSet(this.viewClusteringTtl, 
ttl, NO_TTL);
-this.viewClusteringTimestamp = 
minValueIfSet(this.viewClusteringTimestamp, timestamp, NO_TIMESTAMP);
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(this.viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME);
+updateLiveness(ttl, timestamp, localDeletionTime);
 }
 
 innerMap.get(cellPath).setVersion(new TemporalCell(value, timestamp, 
ttl, localDeletionTime, isNew));
 }
 
-private static int minValueIfSet(int existing, int update, int 
defaultValue)
-{
-if (existing == defaultValue)
-return update;
-if (update 

[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-06 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/91aeb263
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/91aeb263
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/91aeb263

Branch: refs/heads/cassandra-3.3
Commit: 91aeb2637ebec72992de67e02f48d3597b15219f
Parents: 7fbc39b 70c08ec
Author: Carl Yeksigian 
Authored: Wed Jan 6 10:43:35 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 10:43:35 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--




[2/6] cassandra git commit: MV timestamp should be the maximum of the values, not the minimum

2016-01-06 Thread carl
MV timestamp should be the maximum of the values, not the minimum

patch by Carl Yeksigian; reviewed by Jake Luciani for CASSANDRA-10910


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/70c08ece
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/70c08ece
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/70c08ece

Branch: refs/heads/cassandra-3.3
Commit: 70c08ece563731cd546d24541f225c888f4d02f5
Parents: f937c8b
Author: Carl Yeksigian 
Authored: Wed Jan 6 10:41:47 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 10:42:36 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/70c08ece/src/java/org/apache/cassandra/db/view/TemporalRow.java
--
diff --git a/src/java/org/apache/cassandra/db/view/TemporalRow.java 
b/src/java/org/apache/cassandra/db/view/TemporalRow.java
index 8898857..8ee310d 100644
--- a/src/java/org/apache/cassandra/db/view/TemporalRow.java
+++ b/src/java/org/apache/cassandra/db/view/TemporalRow.java
@@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -279,9 +280,7 @@ public class TemporalRow
 this.nowInSec = nowInSec;
 
 LivenessInfo liveness = row.primaryKeyLivenessInfo();
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(viewClusteringLocalDeletionTime, 
row.deletion().time().localDeletionTime(), NO_DELETION_TIME);
-this.viewClusteringTimestamp = minValueIfSet(viewClusteringTimestamp, 
liveness.timestamp(), NO_TIMESTAMP);
-this.viewClusteringTtl = minValueIfSet(viewClusteringTtl, 
liveness.ttl(), NO_TTL);
+updateLiveness(liveness.ttl(), liveness.timestamp(), 
row.deletion().time().localDeletionTime());
 
 List clusteringDefs = 
baseCfs.metadata.clusteringColumns();
 clusteringColumns = new HashMap<>();
@@ -295,6 +294,31 @@ public class TemporalRow
 }
 }
 
+/*
+ * PK ts:5, ttl:1, deletion: 2
+ * Col ts:4, ttl:2, deletion: 3
+ *
+ * TTL use min, since it expires at the lowest time which we are expiring. 
If we have the above values, we
+ * would want to return 1, since the base row expires in 1 second.
+ *
+ * Timestamp uses max, as this is the time that the row has been written 
to the view. See CASSANDRA-10910.
+ *
+ * Local Deletion Time should use max, as this deletion will cover all 
previous values written.
+ */
+@SuppressWarnings("unchecked")
+private void updateLiveness(int ttl, long timestamp, int localDeletionTime)
+{
+// We are returning whichever is higher from valueIfSet
+// Natural order will return the max: 1.compareTo(2) < 0, so 2 is 
returned
+// Reverse order will return the min: 1.compareTo(2) > 0, so 1 is 
returned
+final Comparator max = Comparator.naturalOrder();
+final Comparator min = Comparator.reverseOrder();
+
+this.viewClusteringTtl = valueIfSet(viewClusteringTtl, ttl, NO_TTL, 
min);
+this.viewClusteringTimestamp = valueIfSet(viewClusteringTimestamp, 
timestamp, NO_TIMESTAMP, max);
+this.viewClusteringLocalDeletionTime = 
valueIfSet(viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME, max);
+}
+
 @Override
 public String toString()
 {
@@ -351,30 +375,33 @@ public class TemporalRow
 // If this column is part of the view's primary keys
 if (viewPrimaryKey.contains(identifier))
 {
-this.viewClusteringTtl = minValueIfSet(this.viewClusteringTtl, 
ttl, NO_TTL);
-this.viewClusteringTimestamp = 
minValueIfSet(this.viewClusteringTimestamp, timestamp, NO_TIMESTAMP);
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(this.viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME);
+updateLiveness(ttl, timestamp, localDeletionTime);
 }
 
 innerMap.get(cellPath).setVersion(new TemporalCell(value, timestamp, 
ttl, localDeletionTime, isNew));
 }
 
-private static int minValueIfSet(int existing, int update, int 
defaultValue)
-{
-if (existing == defaultValue)
-return update;
-if (update == defaultValue)
-return existing;
-return Math.min(existing, update);
-}
-
-private static long minValueIfSet(long existing, long update, long 
defaultValu

[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-06 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/91aeb263
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/91aeb263
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/91aeb263

Branch: refs/heads/trunk
Commit: 91aeb2637ebec72992de67e02f48d3597b15219f
Parents: 7fbc39b 70c08ec
Author: Carl Yeksigian 
Authored: Wed Jan 6 10:43:35 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 10:43:35 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--




[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-06 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a7854fdd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a7854fdd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a7854fdd

Branch: refs/heads/cassandra-3.3
Commit: a7854fdd339d3322c3ad66a254925311cedb1f91
Parents: 91aeb26 e9e127a
Author: Carl Yeksigian 
Authored: Wed Jan 6 11:54:24 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 11:54:24 2016 -0500

--
 CHANGES.txt | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7854fdd/CHANGES.txt
--
diff --cc CHANGES.txt
index 10a72c8,cf872d9..77531af
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,14 -1,6 +1,15 @@@
 -3.0.3
 +3.3
 +Merged from 3.0:
+  * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
   * Fix potential assertion error during compaction (CASSANDRA-10944)
 +
 +3.2
 + * Make sure tokens don't exist in several data directories (CASSANDRA-6696)
 + * Add requireAuthorization method to IAuthorizer (CASSANDRA-10852)
 + * Move static JVM options to conf/jvm.options file (CASSANDRA-10494)
 + * Fix CassandraVersion to accept x.y version string (CASSANDRA-10931)
 + * Add forceUserDefinedCleanup to allow more flexible cleanup 
(CASSANDRA-10708)
 + * (cqlsh) allow setting TTL with COPY (CASSANDRA-9494)
   * Fix counting of received sstables in streaming (CASSANDRA-10949)
   * Implement hints compression (CASSANDRA-9428)
   * Fix potential assertion error when reading static columns (CASSANDRA-10903)



[2/6] cassandra git commit: changes.txt

2016-01-06 Thread carl
changes.txt


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e9e127ab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e9e127ab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e9e127ab

Branch: refs/heads/cassandra-3.3
Commit: e9e127abf7915d1351dac5a4c008c35ecfebf9ef
Parents: 70c08ec
Author: Carl Yeksigian 
Authored: Wed Jan 6 11:53:10 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 11:53:10 2016 -0500

--
 CHANGES.txt | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e9e127ab/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 103ae05..cf872d9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
  * Fix potential assertion error during compaction (CASSANDRA-10944)
  * Fix counting of received sstables in streaming (CASSANDRA-10949)
  * Implement hints compression (CASSANDRA-9428)



[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-06 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a7854fdd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a7854fdd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a7854fdd

Branch: refs/heads/trunk
Commit: a7854fdd339d3322c3ad66a254925311cedb1f91
Parents: 91aeb26 e9e127a
Author: Carl Yeksigian 
Authored: Wed Jan 6 11:54:24 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 11:54:24 2016 -0500

--
 CHANGES.txt | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a7854fdd/CHANGES.txt
--
diff --cc CHANGES.txt
index 10a72c8,cf872d9..77531af
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,14 -1,6 +1,15 @@@
 -3.0.3
 +3.3
 +Merged from 3.0:
+  * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
   * Fix potential assertion error during compaction (CASSANDRA-10944)
 +
 +3.2
 + * Make sure tokens don't exist in several data directories (CASSANDRA-6696)
 + * Add requireAuthorization method to IAuthorizer (CASSANDRA-10852)
 + * Move static JVM options to conf/jvm.options file (CASSANDRA-10494)
 + * Fix CassandraVersion to accept x.y version string (CASSANDRA-10931)
 + * Add forceUserDefinedCleanup to allow more flexible cleanup 
(CASSANDRA-10708)
 + * (cqlsh) allow setting TTL with COPY (CASSANDRA-9494)
   * Fix counting of received sstables in streaming (CASSANDRA-10949)
   * Implement hints compression (CASSANDRA-9428)
   * Fix potential assertion error when reading static columns (CASSANDRA-10903)



[1/6] cassandra git commit: changes.txt

2016-01-06 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 70c08ece5 -> e9e127abf
  refs/heads/cassandra-3.3 91aeb2637 -> a7854fdd3
  refs/heads/trunk fa1707fa6 -> 8383e89b8


changes.txt


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e9e127ab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e9e127ab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e9e127ab

Branch: refs/heads/cassandra-3.0
Commit: e9e127abf7915d1351dac5a4c008c35ecfebf9ef
Parents: 70c08ec
Author: Carl Yeksigian 
Authored: Wed Jan 6 11:53:10 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 11:53:10 2016 -0500

--
 CHANGES.txt | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e9e127ab/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 103ae05..cf872d9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
  * Fix potential assertion error during compaction (CASSANDRA-10944)
  * Fix counting of received sstables in streaming (CASSANDRA-10949)
  * Implement hints compression (CASSANDRA-9428)



[3/6] cassandra git commit: changes.txt

2016-01-06 Thread carl
changes.txt


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/e9e127ab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/e9e127ab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/e9e127ab

Branch: refs/heads/trunk
Commit: e9e127abf7915d1351dac5a4c008c35ecfebf9ef
Parents: 70c08ec
Author: Carl Yeksigian 
Authored: Wed Jan 6 11:53:10 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 11:53:10 2016 -0500

--
 CHANGES.txt | 1 +
 1 file changed, 1 insertion(+)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e9e127ab/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 103ae05..cf872d9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
  * Fix potential assertion error during compaction (CASSANDRA-10944)
  * Fix counting of received sstables in streaming (CASSANDRA-10949)
  * Implement hints compression (CASSANDRA-9428)



[6/6] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-01-06 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8383e89b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8383e89b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8383e89b

Branch: refs/heads/trunk
Commit: 8383e89b8eff2f3c2a40a8b1f12d889d29bf855b
Parents: fa1707f a7854fd
Author: Carl Yeksigian 
Authored: Wed Jan 6 11:54:34 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 11:54:34 2016 -0500

--
 CHANGES.txt | 1 +
 1 file changed, 1 insertion(+)
--




[3/6] cassandra git commit: MV timestamp should be the maximum of the values, not the minimum

2016-01-06 Thread carl
MV timestamp should be the maximum of the values, not the minimum

patch by Carl Yeksigian; reviewed by Jake Luciani for CASSANDRA-10910


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/70c08ece
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/70c08ece
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/70c08ece

Branch: refs/heads/trunk
Commit: 70c08ece563731cd546d24541f225c888f4d02f5
Parents: f937c8b
Author: Carl Yeksigian 
Authored: Wed Jan 6 10:41:47 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 6 10:42:36 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/70c08ece/src/java/org/apache/cassandra/db/view/TemporalRow.java
--
diff --git a/src/java/org/apache/cassandra/db/view/TemporalRow.java 
b/src/java/org/apache/cassandra/db/view/TemporalRow.java
index 8898857..8ee310d 100644
--- a/src/java/org/apache/cassandra/db/view/TemporalRow.java
+++ b/src/java/org/apache/cassandra/db/view/TemporalRow.java
@@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -279,9 +280,7 @@ public class TemporalRow
 this.nowInSec = nowInSec;
 
 LivenessInfo liveness = row.primaryKeyLivenessInfo();
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(viewClusteringLocalDeletionTime, 
row.deletion().time().localDeletionTime(), NO_DELETION_TIME);
-this.viewClusteringTimestamp = minValueIfSet(viewClusteringTimestamp, 
liveness.timestamp(), NO_TIMESTAMP);
-this.viewClusteringTtl = minValueIfSet(viewClusteringTtl, 
liveness.ttl(), NO_TTL);
+updateLiveness(liveness.ttl(), liveness.timestamp(), 
row.deletion().time().localDeletionTime());
 
 List clusteringDefs = 
baseCfs.metadata.clusteringColumns();
 clusteringColumns = new HashMap<>();
@@ -295,6 +294,31 @@ public class TemporalRow
 }
 }
 
+/*
+ * PK ts:5, ttl:1, deletion: 2
+ * Col ts:4, ttl:2, deletion: 3
+ *
+ * TTL use min, since it expires at the lowest time which we are expiring. 
If we have the above values, we
+ * would want to return 1, since the base row expires in 1 second.
+ *
+ * Timestamp uses max, as this is the time that the row has been written 
to the view. See CASSANDRA-10910.
+ *
+ * Local Deletion Time should use max, as this deletion will cover all 
previous values written.
+ */
+@SuppressWarnings("unchecked")
+private void updateLiveness(int ttl, long timestamp, int localDeletionTime)
+{
+// We are returning whichever is higher from valueIfSet
+// Natural order will return the max: 1.compareTo(2) < 0, so 2 is 
returned
+// Reverse order will return the min: 1.compareTo(2) > 0, so 1 is 
returned
+final Comparator max = Comparator.naturalOrder();
+final Comparator min = Comparator.reverseOrder();
+
+this.viewClusteringTtl = valueIfSet(viewClusteringTtl, ttl, NO_TTL, 
min);
+this.viewClusteringTimestamp = valueIfSet(viewClusteringTimestamp, 
timestamp, NO_TIMESTAMP, max);
+this.viewClusteringLocalDeletionTime = 
valueIfSet(viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME, max);
+}
+
 @Override
 public String toString()
 {
@@ -351,30 +375,33 @@ public class TemporalRow
 // If this column is part of the view's primary keys
 if (viewPrimaryKey.contains(identifier))
 {
-this.viewClusteringTtl = minValueIfSet(this.viewClusteringTtl, 
ttl, NO_TTL);
-this.viewClusteringTimestamp = 
minValueIfSet(this.viewClusteringTimestamp, timestamp, NO_TIMESTAMP);
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(this.viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME);
+updateLiveness(ttl, timestamp, localDeletionTime);
 }
 
 innerMap.get(cellPath).setVersion(new TemporalCell(value, timestamp, 
ttl, localDeletionTime, isNew));
 }
 
-private static int minValueIfSet(int existing, int update, int 
defaultValue)
-{
-if (existing == defaultValue)
-return update;
-if (update == defaultValue)
-return existing;
-return Math.min(existing, update);
-}
-
-private static long minValueIfSet(long existing, long update, long 
defaultValu

[3/3] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-01-07 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c9d209b0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c9d209b0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c9d209b0

Branch: refs/heads/trunk
Commit: c9d209b02bb47a3ca2b7c13b110700997c01f8d8
Parents: f13bebe caedc8f
Author: Carl Yeksigian 
Authored: Thu Jan 7 10:37:36 2016 -0500
Committer: Carl Yeksigian 
Committed: Thu Jan 7 10:37:36 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--




[1/3] cassandra git commit: Fix bad merge

2016-01-07 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.3 f7843d26d -> caedc8fdc
  refs/heads/trunk f13bebe52 -> c9d209b02


Fix bad merge


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/caedc8fd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/caedc8fd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/caedc8fd

Branch: refs/heads/cassandra-3.3
Commit: caedc8fdcf1a449531e03c96b82db629809e10ab
Parents: f7843d2
Author: Carl Yeksigian 
Authored: Thu Jan 7 10:37:21 2016 -0500
Committer: Carl Yeksigian 
Committed: Thu Jan 7 10:37:21 2016 -0500

--
 .../apache/cassandra/db/view/TemporalRow.java   | 65 ++--
 .../org/apache/cassandra/cql3/ViewTest.java | 30 +
 2 files changed, 76 insertions(+), 19 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/caedc8fd/src/java/org/apache/cassandra/db/view/TemporalRow.java
--
diff --git a/src/java/org/apache/cassandra/db/view/TemporalRow.java 
b/src/java/org/apache/cassandra/db/view/TemporalRow.java
index 8898857..8ee310d 100644
--- a/src/java/org/apache/cassandra/db/view/TemporalRow.java
+++ b/src/java/org/apache/cassandra/db/view/TemporalRow.java
@@ -22,6 +22,7 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -279,9 +280,7 @@ public class TemporalRow
 this.nowInSec = nowInSec;
 
 LivenessInfo liveness = row.primaryKeyLivenessInfo();
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(viewClusteringLocalDeletionTime, 
row.deletion().time().localDeletionTime(), NO_DELETION_TIME);
-this.viewClusteringTimestamp = minValueIfSet(viewClusteringTimestamp, 
liveness.timestamp(), NO_TIMESTAMP);
-this.viewClusteringTtl = minValueIfSet(viewClusteringTtl, 
liveness.ttl(), NO_TTL);
+updateLiveness(liveness.ttl(), liveness.timestamp(), 
row.deletion().time().localDeletionTime());
 
 List clusteringDefs = 
baseCfs.metadata.clusteringColumns();
 clusteringColumns = new HashMap<>();
@@ -295,6 +294,31 @@ public class TemporalRow
 }
 }
 
+/*
+ * PK ts:5, ttl:1, deletion: 2
+ * Col ts:4, ttl:2, deletion: 3
+ *
+ * TTL use min, since it expires at the lowest time which we are expiring. 
If we have the above values, we
+ * would want to return 1, since the base row expires in 1 second.
+ *
+ * Timestamp uses max, as this is the time that the row has been written 
to the view. See CASSANDRA-10910.
+ *
+ * Local Deletion Time should use max, as this deletion will cover all 
previous values written.
+ */
+@SuppressWarnings("unchecked")
+private void updateLiveness(int ttl, long timestamp, int localDeletionTime)
+{
+// We are returning whichever is higher from valueIfSet
+// Natural order will return the max: 1.compareTo(2) < 0, so 2 is 
returned
+// Reverse order will return the min: 1.compareTo(2) > 0, so 1 is 
returned
+final Comparator max = Comparator.naturalOrder();
+final Comparator min = Comparator.reverseOrder();
+
+this.viewClusteringTtl = valueIfSet(viewClusteringTtl, ttl, NO_TTL, 
min);
+this.viewClusteringTimestamp = valueIfSet(viewClusteringTimestamp, 
timestamp, NO_TIMESTAMP, max);
+this.viewClusteringLocalDeletionTime = 
valueIfSet(viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME, max);
+}
+
 @Override
 public String toString()
 {
@@ -351,30 +375,33 @@ public class TemporalRow
 // If this column is part of the view's primary keys
 if (viewPrimaryKey.contains(identifier))
 {
-this.viewClusteringTtl = minValueIfSet(this.viewClusteringTtl, 
ttl, NO_TTL);
-this.viewClusteringTimestamp = 
minValueIfSet(this.viewClusteringTimestamp, timestamp, NO_TIMESTAMP);
-this.viewClusteringLocalDeletionTime = 
minValueIfSet(this.viewClusteringLocalDeletionTime, localDeletionTime, 
NO_DELETION_TIME);
+updateLiveness(ttl, timestamp, localDeletionTime);
 }
 
 innerMap.get(cellPath).setVersion(new TemporalCell(value, timestamp, 
ttl, localDeletionTime, isNew));
 }
 
-private static int minValueIfSet(int existing, int update, int 
defaultValue)
-{
-if (existing == defaultValue)
-return update;
-if (update == defaultValue)
-return existing;
-return Math.min(existing, update);
-}
-
-private static long minValueIfSet(long existing, long update, long 
defau

[17/19] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-12 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/91d7bed5
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/91d7bed5
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/91d7bed5

Branch: refs/heads/cassandra-3.3
Commit: 91d7bed558dcd0e67a5f45b07f29af68ad1a55f0
Parents: d2c41b1 a942b2c
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:28:09 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:30:31 2016 -0500

--
 CHANGES.txt | 20 
 .../io/sstable/format/SSTableReader.java| 10 +-
 2 files changed, 21 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/91d7bed5/CHANGES.txt
--
diff --cc CHANGES.txt
index 50dc106,b916fa6..a301b0f
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -5,14 -4,6 +5,26 @@@ Merged from 3.0
 tombstone (CASSANDRA-10743)
   * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
   * Fix potential assertion error during compaction (CASSANDRA-10944)
++Merged from 2.2:
++ * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
++ * Enable GC logging by default (CASSANDRA-10140)
++ * Optimize pending range computation (CASSANDRA-9258)
++ * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
++ * drop/alter user should be case sensitive (CASSANDRA-10817)
++Merged from 2.1:
++ * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
++ * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
++ * Fix pending range calculation during moves (CASSANDRA-10887)
++ * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
++
 +
 +3.2
 + * Make sure tokens don't exist in several data directories (CASSANDRA-6696)
 + * Add requireAuthorization method to IAuthorizer (CASSANDRA-10852)
 + * Move static JVM options to conf/jvm.options file (CASSANDRA-10494)
 + * Fix CassandraVersion to accept x.y version string (CASSANDRA-10931)
 + * Add forceUserDefinedCleanup to allow more flexible cleanup 
(CASSANDRA-10708)
 + * (cqlsh) allow setting TTL with COPY (CASSANDRA-9494)
   * Fix counting of received sstables in streaming (CASSANDRA-10949)
   * Implement hints compression (CASSANDRA-9428)
   * Fix potential assertion error when reading static columns (CASSANDRA-10903)
@@@ -46,19 -15,24 +58,11 @@@ Merged from 3.0
   * (Hadoop) Close Clusters and Sessions in Hadoop Input/Output classes 
(CASSANDRA-10837)
   * Fix sstableloader not working with upper case keyspace name 
(CASSANDRA-10806)
  Merged from 2.2:
-- * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
-- * Enable GC logging by default (CASSANDRA-10140)
-- * Optimize pending range computation (CASSANDRA-9258)
-- * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
-- * drop/alter user should be case sensitive (CASSANDRA-10817)
   * jemalloc detection fails due to quoting issues in regexv (CASSANDRA-10946)
   * (cqlsh) show correct column names for empty result sets (CASSANDRA-9813)
   * Add new types to Stress (CASSANDRA-9556)
   * Add property to allow listening on broadcast interface (CASSANDRA-9748)
 - * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
 - * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
 - * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
 - * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
  Merged from 2.1:
 - * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
-- * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
-- * Fix pending range calculation during moves (CASSANDRA-10887)
-  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
 - * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
   * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
   * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
   * cqlsh fails to decode utf-8 characters for text typed columns 
(CASSANDRA-10875)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/91d7bed5/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--



[13/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a6e5cdae
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a6e5cdae
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a6e5cdae

Branch: refs/heads/cassandra-3.3
Commit: a6e5cdaefc034fcd3069bc0db5bed40fce91aafe
Parents: e8bd8a4 10bbcfc
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:27:24 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:27:24 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../apache/cassandra/io/sstable/format/SSTableReader.java | 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/CHANGES.txt
--
diff --cc CHANGES.txt
index 50d5f60,6f567ee..477a104
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,11 +1,25 @@@
 -2.1.13
 +2.2.5
 + * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
 + * Enable GC logging by default (CASSANDRA-10140)
 + * Optimize pending range computation (CASSANDRA-9258)
 + * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
 + * drop/alter user should be case sensitive (CASSANDRA-10817)
 + * jemalloc detection fails due to quoting issues in regexv (CASSANDRA-10946)
 + * Support counter-columns for native aggregates (sum,avg,max,min) 
(CASSANDRA-9977)
 + * (cqlsh) show correct column names for empty result sets (CASSANDRA-9813)
 + * Add new types to Stress (CASSANDRA-9556)
 + * Add property to allow listening on broadcast interface (CASSANDRA-9748)
 + * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
 + * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
 + * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
 + * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
 +Merged from 2.1:
+  * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
   * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
   * Fix pending range calculation during moves (CASSANDRA-10887)
-  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
   * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
   * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
 - * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)
   * cqlsh fails to decode utf-8 characters for text typed columns 
(CASSANDRA-10875)
   * Log error when stream session fails (CASSANDRA-9294)
   * Fix bugs in commit log archiving startup behavior (CASSANDRA-10593)



[10/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--
diff --cc src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
index 2b65792,000..27ac87c
mode 100644,00..100644
--- a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
@@@ -1,2304 -1,0 +1,2312 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + * http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.cassandra.io.sstable.format;
 +
 +import java.io.*;
 +import java.nio.ByteBuffer;
 +import java.util.*;
 +import java.util.concurrent.*;
 +import java.util.concurrent.atomic.AtomicBoolean;
 +import java.util.concurrent.atomic.AtomicLong;
 +
 +import com.google.common.annotations.VisibleForTesting;
 +import com.google.common.base.Predicate;
 +import com.google.common.collect.Iterables;
 +import com.google.common.collect.Iterators;
 +import com.google.common.collect.Ordering;
 +import com.google.common.primitives.Longs;
 +import com.google.common.util.concurrent.RateLimiter;
 +
 +import com.clearspring.analytics.stream.cardinality.CardinalityMergeException;
 +import com.clearspring.analytics.stream.cardinality.HyperLogLogPlus;
 +import com.clearspring.analytics.stream.cardinality.ICardinality;
 +import com.codahale.metrics.Counter;
 +import org.apache.cassandra.cache.CachingOptions;
 +import org.apache.cassandra.cache.InstrumentingCache;
 +import org.apache.cassandra.cache.KeyCacheKey;
 +import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
 +import org.apache.cassandra.concurrent.ScheduledExecutors;
 +import org.apache.cassandra.config.*;
 +import org.apache.cassandra.db.*;
 +import org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
 +import org.apache.cassandra.db.commitlog.ReplayPosition;
 +import org.apache.cassandra.db.composites.CellName;
 +import org.apache.cassandra.db.filter.ColumnSlice;
 +import org.apache.cassandra.db.index.SecondaryIndex;
 +import org.apache.cassandra.db.lifecycle.Tracker;
 +import org.apache.cassandra.dht.*;
 +import org.apache.cassandra.io.FSError;
 +import org.apache.cassandra.io.FSReadError;
 +import org.apache.cassandra.io.compress.CompressionMetadata;
 +import org.apache.cassandra.io.sstable.*;
 +import org.apache.cassandra.io.sstable.metadata.*;
 +import org.apache.cassandra.io.util.*;
 +import org.apache.cassandra.metrics.RestorableMeter;
 +import org.apache.cassandra.metrics.StorageMetrics;
 +import org.apache.cassandra.service.ActiveRepairService;
 +import org.apache.cassandra.service.CacheService;
 +import org.apache.cassandra.service.StorageService;
 +import org.apache.cassandra.utils.*;
 +import org.apache.cassandra.utils.concurrent.OpOrder;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +import org.apache.cassandra.utils.concurrent.Ref;
 +import org.apache.cassandra.utils.concurrent.SelfRefCounted;
 +
 +import static 
org.apache.cassandra.db.Directories.SECONDARY_INDEX_NAME_SEPARATOR;
 +
 +/**
 + * An SSTableReader can be constructed in a number of places, but typically 
is either
 + * read from disk at startup, or constructed from a flushed memtable, or 
after compaction
 + * to replace some existing sstables. However once created, an sstablereader 
may also be modified.
 + *
 + * A reader's OpenReason describes its current stage in its lifecycle, as 
follows:
 + *
 + *
 + *  {@code
 + * NORMAL
 + * From:   None=> Reader has been read from disk, either at 
startup or from a flushed memtable
 + * EARLY   => Reader is the final result of a compaction
 + * MOVED_START => Reader WAS being compacted, but this failed and 
it has been restored to NORMAL status
 + *
 + * EARLY
 + * From:   None=> Reader is a compaction replacement that is 
either incomplete and has been opened
 + *to represent its partial result status, or has 
been finished but the compaction
 + *it is a part of has not yet completed fully
 + * EARLY   => Same as from None, only it is not the first 
t

[06/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--
diff --cc src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
index 2b65792,000..27ac87c
mode 100644,00..100644
--- a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
@@@ -1,2304 -1,0 +1,2312 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + * http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.cassandra.io.sstable.format;
 +
 +import java.io.*;
 +import java.nio.ByteBuffer;
 +import java.util.*;
 +import java.util.concurrent.*;
 +import java.util.concurrent.atomic.AtomicBoolean;
 +import java.util.concurrent.atomic.AtomicLong;
 +
 +import com.google.common.annotations.VisibleForTesting;
 +import com.google.common.base.Predicate;
 +import com.google.common.collect.Iterables;
 +import com.google.common.collect.Iterators;
 +import com.google.common.collect.Ordering;
 +import com.google.common.primitives.Longs;
 +import com.google.common.util.concurrent.RateLimiter;
 +
 +import com.clearspring.analytics.stream.cardinality.CardinalityMergeException;
 +import com.clearspring.analytics.stream.cardinality.HyperLogLogPlus;
 +import com.clearspring.analytics.stream.cardinality.ICardinality;
 +import com.codahale.metrics.Counter;
 +import org.apache.cassandra.cache.CachingOptions;
 +import org.apache.cassandra.cache.InstrumentingCache;
 +import org.apache.cassandra.cache.KeyCacheKey;
 +import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
 +import org.apache.cassandra.concurrent.ScheduledExecutors;
 +import org.apache.cassandra.config.*;
 +import org.apache.cassandra.db.*;
 +import org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
 +import org.apache.cassandra.db.commitlog.ReplayPosition;
 +import org.apache.cassandra.db.composites.CellName;
 +import org.apache.cassandra.db.filter.ColumnSlice;
 +import org.apache.cassandra.db.index.SecondaryIndex;
 +import org.apache.cassandra.db.lifecycle.Tracker;
 +import org.apache.cassandra.dht.*;
 +import org.apache.cassandra.io.FSError;
 +import org.apache.cassandra.io.FSReadError;
 +import org.apache.cassandra.io.compress.CompressionMetadata;
 +import org.apache.cassandra.io.sstable.*;
 +import org.apache.cassandra.io.sstable.metadata.*;
 +import org.apache.cassandra.io.util.*;
 +import org.apache.cassandra.metrics.RestorableMeter;
 +import org.apache.cassandra.metrics.StorageMetrics;
 +import org.apache.cassandra.service.ActiveRepairService;
 +import org.apache.cassandra.service.CacheService;
 +import org.apache.cassandra.service.StorageService;
 +import org.apache.cassandra.utils.*;
 +import org.apache.cassandra.utils.concurrent.OpOrder;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +import org.apache.cassandra.utils.concurrent.Ref;
 +import org.apache.cassandra.utils.concurrent.SelfRefCounted;
 +
 +import static 
org.apache.cassandra.db.Directories.SECONDARY_INDEX_NAME_SEPARATOR;
 +
 +/**
 + * An SSTableReader can be constructed in a number of places, but typically 
is either
 + * read from disk at startup, or constructed from a flushed memtable, or 
after compaction
 + * to replace some existing sstables. However once created, an sstablereader 
may also be modified.
 + *
 + * A reader's OpenReason describes its current stage in its lifecycle, as 
follows:
 + *
 + *
 + *  {@code
 + * NORMAL
 + * From:   None=> Reader has been read from disk, either at 
startup or from a flushed memtable
 + * EARLY   => Reader is the final result of a compaction
 + * MOVED_START => Reader WAS being compacted, but this failed and 
it has been restored to NORMAL status
 + *
 + * EARLY
 + * From:   None=> Reader is a compaction replacement that is 
either incomplete and has been opened
 + *to represent its partial result status, or has 
been finished but the compaction
 + *it is a part of has not yet completed fully
 + * EARLY   => Same as from None, only it is not the first 
t

[16/19] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-12 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a942b2ce
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a942b2ce
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a942b2ce

Branch: refs/heads/cassandra-3.0
Commit: a942b2ceb8fcd9edb6d99a15406b2018426c4f48
Parents: 4c7b06b a6e5cda
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:27:41 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:27:41 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../apache/cassandra/io/sstable/format/SSTableReader.java | 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a942b2ce/CHANGES.txt
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a942b2ce/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--



[08/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--
diff --cc src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
index 2b65792,000..27ac87c
mode 100644,00..100644
--- a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
@@@ -1,2304 -1,0 +1,2312 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + * http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.cassandra.io.sstable.format;
 +
 +import java.io.*;
 +import java.nio.ByteBuffer;
 +import java.util.*;
 +import java.util.concurrent.*;
 +import java.util.concurrent.atomic.AtomicBoolean;
 +import java.util.concurrent.atomic.AtomicLong;
 +
 +import com.google.common.annotations.VisibleForTesting;
 +import com.google.common.base.Predicate;
 +import com.google.common.collect.Iterables;
 +import com.google.common.collect.Iterators;
 +import com.google.common.collect.Ordering;
 +import com.google.common.primitives.Longs;
 +import com.google.common.util.concurrent.RateLimiter;
 +
 +import com.clearspring.analytics.stream.cardinality.CardinalityMergeException;
 +import com.clearspring.analytics.stream.cardinality.HyperLogLogPlus;
 +import com.clearspring.analytics.stream.cardinality.ICardinality;
 +import com.codahale.metrics.Counter;
 +import org.apache.cassandra.cache.CachingOptions;
 +import org.apache.cassandra.cache.InstrumentingCache;
 +import org.apache.cassandra.cache.KeyCacheKey;
 +import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
 +import org.apache.cassandra.concurrent.ScheduledExecutors;
 +import org.apache.cassandra.config.*;
 +import org.apache.cassandra.db.*;
 +import org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
 +import org.apache.cassandra.db.commitlog.ReplayPosition;
 +import org.apache.cassandra.db.composites.CellName;
 +import org.apache.cassandra.db.filter.ColumnSlice;
 +import org.apache.cassandra.db.index.SecondaryIndex;
 +import org.apache.cassandra.db.lifecycle.Tracker;
 +import org.apache.cassandra.dht.*;
 +import org.apache.cassandra.io.FSError;
 +import org.apache.cassandra.io.FSReadError;
 +import org.apache.cassandra.io.compress.CompressionMetadata;
 +import org.apache.cassandra.io.sstable.*;
 +import org.apache.cassandra.io.sstable.metadata.*;
 +import org.apache.cassandra.io.util.*;
 +import org.apache.cassandra.metrics.RestorableMeter;
 +import org.apache.cassandra.metrics.StorageMetrics;
 +import org.apache.cassandra.service.ActiveRepairService;
 +import org.apache.cassandra.service.CacheService;
 +import org.apache.cassandra.service.StorageService;
 +import org.apache.cassandra.utils.*;
 +import org.apache.cassandra.utils.concurrent.OpOrder;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +import org.apache.cassandra.utils.concurrent.Ref;
 +import org.apache.cassandra.utils.concurrent.SelfRefCounted;
 +
 +import static 
org.apache.cassandra.db.Directories.SECONDARY_INDEX_NAME_SEPARATOR;
 +
 +/**
 + * An SSTableReader can be constructed in a number of places, but typically 
is either
 + * read from disk at startup, or constructed from a flushed memtable, or 
after compaction
 + * to replace some existing sstables. However once created, an sstablereader 
may also be modified.
 + *
 + * A reader's OpenReason describes its current stage in its lifecycle, as 
follows:
 + *
 + *
 + *  {@code
 + * NORMAL
 + * From:   None=> Reader has been read from disk, either at 
startup or from a flushed memtable
 + * EARLY   => Reader is the final result of a compaction
 + * MOVED_START => Reader WAS being compacted, but this failed and 
it has been restored to NORMAL status
 + *
 + * EARLY
 + * From:   None=> Reader is a compaction replacement that is 
either incomplete and has been opened
 + *to represent its partial result status, or has 
been finished but the compaction
 + *it is a part of has not yet completed fully
 + * EARLY   => Same as from None, only it is not the first 
t

[04/19] cassandra git commit: If CompactionMetadata is not in stats file, use index summary instead

2016-01-12 Thread carl
If CompactionMetadata is not in stats file, use index summary instead

patch by Carl Yeksigian; reviewed by Yuki Morishita for CASSANDRA-10676


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10bbcfcd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10bbcfcd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10bbcfcd

Branch: refs/heads/cassandra-3.0
Commit: 10bbcfcd9c0599652e89687d5d6cd6bac40e3772
Parents: 0f27d68
Author: Carl Yeksigian 
Authored: Tue Jan 12 11:08:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:26:43 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../org/apache/cassandra/io/sstable/SSTableReader.java| 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index a6a0c60..6f567ee 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,7 +1,8 @@
 2.1.13
+ * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
  * Retry sending gossip syn multiple times during shadow round (CASSANDRA-8072)
  * Fix pending range calculation during moves (CASSANDRA-10887)
- * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+ * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
  * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
  * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
  * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 84add6f..2680125 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -265,7 +265,15 @@ public class SSTableReader extends SSTable implements 
SelfRefCounted

[15/19] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-12 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a942b2ce
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a942b2ce
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a942b2ce

Branch: refs/heads/cassandra-3.3
Commit: a942b2ceb8fcd9edb6d99a15406b2018426c4f48
Parents: 4c7b06b a6e5cda
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:27:41 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:27:41 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../apache/cassandra/io/sstable/format/SSTableReader.java | 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a942b2ce/CHANGES.txt
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a942b2ce/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--



[01/19] cassandra git commit: If CompactionMetadata is not in stats file, use index summary instead

2016-01-12 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 0f27d68fc -> 10bbcfcd9
  refs/heads/cassandra-2.2 e8bd8a44b -> a6e5cdaef
  refs/heads/cassandra-3.0 4c7b06b0a -> a942b2ceb
  refs/heads/cassandra-3.3 d2c41b1b3 -> 91d7bed55
  refs/heads/trunk 1ae3115b1 -> 22a1bbb10


If CompactionMetadata is not in stats file, use index summary instead

patch by Carl Yeksigian; reviewed by Yuki Morishita for CASSANDRA-10676


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10bbcfcd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10bbcfcd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10bbcfcd

Branch: refs/heads/cassandra-2.1
Commit: 10bbcfcd9c0599652e89687d5d6cd6bac40e3772
Parents: 0f27d68
Author: Carl Yeksigian 
Authored: Tue Jan 12 11:08:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:26:43 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../org/apache/cassandra/io/sstable/SSTableReader.java| 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index a6a0c60..6f567ee 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,7 +1,8 @@
 2.1.13
+ * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
  * Retry sending gossip syn multiple times during shadow round (CASSANDRA-8072)
  * Fix pending range calculation during moves (CASSANDRA-10887)
- * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+ * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
  * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
  * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
  * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 84add6f..2680125 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -265,7 +265,15 @@ public class SSTableReader extends SSTable implements 
SelfRefCounted

[07/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a6e5cdae
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a6e5cdae
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a6e5cdae

Branch: refs/heads/trunk
Commit: a6e5cdaefc034fcd3069bc0db5bed40fce91aafe
Parents: e8bd8a4 10bbcfc
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:27:24 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:27:24 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../apache/cassandra/io/sstable/format/SSTableReader.java | 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/CHANGES.txt
--
diff --cc CHANGES.txt
index 50d5f60,6f567ee..477a104
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,11 +1,25 @@@
 -2.1.13
 +2.2.5
 + * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
 + * Enable GC logging by default (CASSANDRA-10140)
 + * Optimize pending range computation (CASSANDRA-9258)
 + * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
 + * drop/alter user should be case sensitive (CASSANDRA-10817)
 + * jemalloc detection fails due to quoting issues in regexv (CASSANDRA-10946)
 + * Support counter-columns for native aggregates (sum,avg,max,min) 
(CASSANDRA-9977)
 + * (cqlsh) show correct column names for empty result sets (CASSANDRA-9813)
 + * Add new types to Stress (CASSANDRA-9556)
 + * Add property to allow listening on broadcast interface (CASSANDRA-9748)
 + * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
 + * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
 + * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
 + * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
 +Merged from 2.1:
+  * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
   * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
   * Fix pending range calculation during moves (CASSANDRA-10887)
-  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
   * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
   * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
 - * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)
   * cqlsh fails to decode utf-8 characters for text typed columns 
(CASSANDRA-10875)
   * Log error when stream session fails (CASSANDRA-9294)
   * Fix bugs in commit log archiving startup behavior (CASSANDRA-10593)



[14/19] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-12 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a942b2ce
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a942b2ce
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a942b2ce

Branch: refs/heads/trunk
Commit: a942b2ceb8fcd9edb6d99a15406b2018426c4f48
Parents: 4c7b06b a6e5cda
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:27:41 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:27:41 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../apache/cassandra/io/sstable/format/SSTableReader.java | 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a942b2ce/CHANGES.txt
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a942b2ce/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--



[12/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--
diff --cc src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
index 2b65792,000..27ac87c
mode 100644,00..100644
--- a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
@@@ -1,2304 -1,0 +1,2312 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * "License"); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + * http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an "AS IS" BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.cassandra.io.sstable.format;
 +
 +import java.io.*;
 +import java.nio.ByteBuffer;
 +import java.util.*;
 +import java.util.concurrent.*;
 +import java.util.concurrent.atomic.AtomicBoolean;
 +import java.util.concurrent.atomic.AtomicLong;
 +
 +import com.google.common.annotations.VisibleForTesting;
 +import com.google.common.base.Predicate;
 +import com.google.common.collect.Iterables;
 +import com.google.common.collect.Iterators;
 +import com.google.common.collect.Ordering;
 +import com.google.common.primitives.Longs;
 +import com.google.common.util.concurrent.RateLimiter;
 +
 +import com.clearspring.analytics.stream.cardinality.CardinalityMergeException;
 +import com.clearspring.analytics.stream.cardinality.HyperLogLogPlus;
 +import com.clearspring.analytics.stream.cardinality.ICardinality;
 +import com.codahale.metrics.Counter;
 +import org.apache.cassandra.cache.CachingOptions;
 +import org.apache.cassandra.cache.InstrumentingCache;
 +import org.apache.cassandra.cache.KeyCacheKey;
 +import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
 +import org.apache.cassandra.concurrent.ScheduledExecutors;
 +import org.apache.cassandra.config.*;
 +import org.apache.cassandra.db.*;
 +import org.apache.cassandra.db.columniterator.OnDiskAtomIterator;
 +import org.apache.cassandra.db.commitlog.ReplayPosition;
 +import org.apache.cassandra.db.composites.CellName;
 +import org.apache.cassandra.db.filter.ColumnSlice;
 +import org.apache.cassandra.db.index.SecondaryIndex;
 +import org.apache.cassandra.db.lifecycle.Tracker;
 +import org.apache.cassandra.dht.*;
 +import org.apache.cassandra.io.FSError;
 +import org.apache.cassandra.io.FSReadError;
 +import org.apache.cassandra.io.compress.CompressionMetadata;
 +import org.apache.cassandra.io.sstable.*;
 +import org.apache.cassandra.io.sstable.metadata.*;
 +import org.apache.cassandra.io.util.*;
 +import org.apache.cassandra.metrics.RestorableMeter;
 +import org.apache.cassandra.metrics.StorageMetrics;
 +import org.apache.cassandra.service.ActiveRepairService;
 +import org.apache.cassandra.service.CacheService;
 +import org.apache.cassandra.service.StorageService;
 +import org.apache.cassandra.utils.*;
 +import org.apache.cassandra.utils.concurrent.OpOrder;
 +import org.slf4j.Logger;
 +import org.slf4j.LoggerFactory;
 +import org.apache.cassandra.utils.concurrent.Ref;
 +import org.apache.cassandra.utils.concurrent.SelfRefCounted;
 +
 +import static 
org.apache.cassandra.db.Directories.SECONDARY_INDEX_NAME_SEPARATOR;
 +
 +/**
 + * An SSTableReader can be constructed in a number of places, but typically 
is either
 + * read from disk at startup, or constructed from a flushed memtable, or 
after compaction
 + * to replace some existing sstables. However once created, an sstablereader 
may also be modified.
 + *
 + * A reader's OpenReason describes its current stage in its lifecycle, as 
follows:
 + *
 + *
 + *  {@code
 + * NORMAL
 + * From:   None=> Reader has been read from disk, either at 
startup or from a flushed memtable
 + * EARLY   => Reader is the final result of a compaction
 + * MOVED_START => Reader WAS being compacted, but this failed and 
it has been restored to NORMAL status
 + *
 + * EARLY
 + * From:   None=> Reader is a compaction replacement that is 
either incomplete and has been opened
 + *to represent its partial result status, or has 
been finished but the compaction
 + *it is a part of has not yet completed fully
 + * EARLY   => Same as from None, only it is not the first 
t

[03/19] cassandra git commit: If CompactionMetadata is not in stats file, use index summary instead

2016-01-12 Thread carl
If CompactionMetadata is not in stats file, use index summary instead

patch by Carl Yeksigian; reviewed by Yuki Morishita for CASSANDRA-10676


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10bbcfcd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10bbcfcd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10bbcfcd

Branch: refs/heads/trunk
Commit: 10bbcfcd9c0599652e89687d5d6cd6bac40e3772
Parents: 0f27d68
Author: Carl Yeksigian 
Authored: Tue Jan 12 11:08:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:26:43 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../org/apache/cassandra/io/sstable/SSTableReader.java| 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index a6a0c60..6f567ee 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,7 +1,8 @@
 2.1.13
+ * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
  * Retry sending gossip syn multiple times during shadow round (CASSANDRA-8072)
  * Fix pending range calculation during moves (CASSANDRA-10887)
- * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+ * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
  * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
  * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
  * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 84add6f..2680125 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -265,7 +265,15 @@ public class SSTableReader extends SSTable implements 
SelfRefCounted

[05/19] cassandra git commit: If CompactionMetadata is not in stats file, use index summary instead

2016-01-12 Thread carl
If CompactionMetadata is not in stats file, use index summary instead

patch by Carl Yeksigian; reviewed by Yuki Morishita for CASSANDRA-10676


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10bbcfcd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10bbcfcd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10bbcfcd

Branch: refs/heads/cassandra-3.3
Commit: 10bbcfcd9c0599652e89687d5d6cd6bac40e3772
Parents: 0f27d68
Author: Carl Yeksigian 
Authored: Tue Jan 12 11:08:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:26:43 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../org/apache/cassandra/io/sstable/SSTableReader.java| 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index a6a0c60..6f567ee 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,7 +1,8 @@
 2.1.13
+ * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
  * Retry sending gossip syn multiple times during shadow round (CASSANDRA-8072)
  * Fix pending range calculation during moves (CASSANDRA-10887)
- * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+ * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
  * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
  * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
  * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 84add6f..2680125 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -265,7 +265,15 @@ public class SSTableReader extends SSTable implements 
SelfRefCounted

[02/19] cassandra git commit: If CompactionMetadata is not in stats file, use index summary instead

2016-01-12 Thread carl
If CompactionMetadata is not in stats file, use index summary instead

patch by Carl Yeksigian; reviewed by Yuki Morishita for CASSANDRA-10676


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10bbcfcd
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10bbcfcd
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10bbcfcd

Branch: refs/heads/cassandra-2.2
Commit: 10bbcfcd9c0599652e89687d5d6cd6bac40e3772
Parents: 0f27d68
Author: Carl Yeksigian 
Authored: Tue Jan 12 11:08:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:26:43 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../org/apache/cassandra/io/sstable/SSTableReader.java| 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index a6a0c60..6f567ee 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,7 +1,8 @@
 2.1.13
+ * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
  * Retry sending gossip syn multiple times during shadow round (CASSANDRA-8072)
  * Fix pending range calculation during moves (CASSANDRA-10887)
- * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+ * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
  * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
  * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
  * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/10bbcfcd/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 84add6f..2680125 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -265,7 +265,15 @@ public class SSTableReader extends SSTable implements 
SelfRefCounted

[19/19] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-01-12 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/22a1bbb1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/22a1bbb1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/22a1bbb1

Branch: refs/heads/trunk
Commit: 22a1bbb108ac638613c7a3381840a092acfe123e
Parents: 1ae3115 91d7bed
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:30:50 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:30:50 2016 -0500

--
 CHANGES.txt | 20 
 .../io/sstable/format/SSTableReader.java| 10 +-
 2 files changed, 21 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/22a1bbb1/CHANGES.txt
--
diff --cc CHANGES.txt
index 41d06cc,a301b0f..e03b6a1
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -11,8 -5,19 +11,20 @@@ Merged from 3.0
 tombstone (CASSANDRA-10743)
   * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
   * Fix potential assertion error during compaction (CASSANDRA-10944)
+ Merged from 2.2:
+  * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
+  * Enable GC logging by default (CASSANDRA-10140)
+  * Optimize pending range computation (CASSANDRA-9258)
+  * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
+  * drop/alter user should be case sensitive (CASSANDRA-10817)
+ Merged from 2.1:
+  * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
+  * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
+  * Fix pending range calculation during moves (CASSANDRA-10887)
+  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
+ 
  
 +
  3.2
   * Make sure tokens don't exist in several data directories (CASSANDRA-6696)
   * Add requireAuthorization method to IAuthorizer (CASSANDRA-10852)



[09/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a6e5cdae
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a6e5cdae
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a6e5cdae

Branch: refs/heads/cassandra-2.2
Commit: a6e5cdaefc034fcd3069bc0db5bed40fce91aafe
Parents: e8bd8a4 10bbcfc
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:27:24 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:27:24 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../apache/cassandra/io/sstable/format/SSTableReader.java | 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/CHANGES.txt
--
diff --cc CHANGES.txt
index 50d5f60,6f567ee..477a104
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,11 +1,25 @@@
 -2.1.13
 +2.2.5
 + * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
 + * Enable GC logging by default (CASSANDRA-10140)
 + * Optimize pending range computation (CASSANDRA-9258)
 + * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
 + * drop/alter user should be case sensitive (CASSANDRA-10817)
 + * jemalloc detection fails due to quoting issues in regexv (CASSANDRA-10946)
 + * Support counter-columns for native aggregates (sum,avg,max,min) 
(CASSANDRA-9977)
 + * (cqlsh) show correct column names for empty result sets (CASSANDRA-9813)
 + * Add new types to Stress (CASSANDRA-9556)
 + * Add property to allow listening on broadcast interface (CASSANDRA-9748)
 + * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
 + * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
 + * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
 + * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
 +Merged from 2.1:
+  * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
   * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
   * Fix pending range calculation during moves (CASSANDRA-10887)
-  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
   * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
   * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
 - * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)
   * cqlsh fails to decode utf-8 characters for text typed columns 
(CASSANDRA-10875)
   * Log error when stream session fails (CASSANDRA-9294)
   * Fix bugs in commit log archiving startup behavior (CASSANDRA-10593)



[18/19] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-12 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/91d7bed5
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/91d7bed5
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/91d7bed5

Branch: refs/heads/trunk
Commit: 91d7bed558dcd0e67a5f45b07f29af68ad1a55f0
Parents: d2c41b1 a942b2c
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:28:09 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:30:31 2016 -0500

--
 CHANGES.txt | 20 
 .../io/sstable/format/SSTableReader.java| 10 +-
 2 files changed, 21 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/91d7bed5/CHANGES.txt
--
diff --cc CHANGES.txt
index 50dc106,b916fa6..a301b0f
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -5,14 -4,6 +5,26 @@@ Merged from 3.0
 tombstone (CASSANDRA-10743)
   * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
   * Fix potential assertion error during compaction (CASSANDRA-10944)
++Merged from 2.2:
++ * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
++ * Enable GC logging by default (CASSANDRA-10140)
++ * Optimize pending range computation (CASSANDRA-9258)
++ * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
++ * drop/alter user should be case sensitive (CASSANDRA-10817)
++Merged from 2.1:
++ * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
++ * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
++ * Fix pending range calculation during moves (CASSANDRA-10887)
++ * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
++
 +
 +3.2
 + * Make sure tokens don't exist in several data directories (CASSANDRA-6696)
 + * Add requireAuthorization method to IAuthorizer (CASSANDRA-10852)
 + * Move static JVM options to conf/jvm.options file (CASSANDRA-10494)
 + * Fix CassandraVersion to accept x.y version string (CASSANDRA-10931)
 + * Add forceUserDefinedCleanup to allow more flexible cleanup 
(CASSANDRA-10708)
 + * (cqlsh) allow setting TTL with COPY (CASSANDRA-9494)
   * Fix counting of received sstables in streaming (CASSANDRA-10949)
   * Implement hints compression (CASSANDRA-9428)
   * Fix potential assertion error when reading static columns (CASSANDRA-10903)
@@@ -46,19 -15,24 +58,11 @@@ Merged from 3.0
   * (Hadoop) Close Clusters and Sessions in Hadoop Input/Output classes 
(CASSANDRA-10837)
   * Fix sstableloader not working with upper case keyspace name 
(CASSANDRA-10806)
  Merged from 2.2:
-- * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
-- * Enable GC logging by default (CASSANDRA-10140)
-- * Optimize pending range computation (CASSANDRA-9258)
-- * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
-- * drop/alter user should be case sensitive (CASSANDRA-10817)
   * jemalloc detection fails due to quoting issues in regexv (CASSANDRA-10946)
   * (cqlsh) show correct column names for empty result sets (CASSANDRA-9813)
   * Add new types to Stress (CASSANDRA-9556)
   * Add property to allow listening on broadcast interface (CASSANDRA-9748)
 - * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
 - * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
 - * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
 - * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
  Merged from 2.1:
 - * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
-- * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
-- * Fix pending range calculation during moves (CASSANDRA-10887)
-  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
 - * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
   * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
   * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
   * cqlsh fails to decode utf-8 characters for text typed columns 
(CASSANDRA-10875)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/91d7bed5/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
--



[11/19] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2016-01-12 Thread carl
Merge branch 'cassandra-2.1' into cassandra-2.2


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a6e5cdae
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a6e5cdae
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a6e5cdae

Branch: refs/heads/cassandra-3.0
Commit: a6e5cdaefc034fcd3069bc0db5bed40fce91aafe
Parents: e8bd8a4 10bbcfc
Author: Carl Yeksigian 
Authored: Tue Jan 12 12:27:24 2016 -0500
Committer: Carl Yeksigian 
Committed: Tue Jan 12 12:27:24 2016 -0500

--
 CHANGES.txt   |  3 ++-
 .../apache/cassandra/io/sstable/format/SSTableReader.java | 10 +-
 2 files changed, 11 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6e5cdae/CHANGES.txt
--
diff --cc CHANGES.txt
index 50d5f60,6f567ee..477a104
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,24 -1,11 +1,25 @@@
 -2.1.13
 +2.2.5
 + * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
 + * Enable GC logging by default (CASSANDRA-10140)
 + * Optimize pending range computation (CASSANDRA-9258)
 + * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
 + * drop/alter user should be case sensitive (CASSANDRA-10817)
 + * jemalloc detection fails due to quoting issues in regexv (CASSANDRA-10946)
 + * Support counter-columns for native aggregates (sum,avg,max,min) 
(CASSANDRA-9977)
 + * (cqlsh) show correct column names for empty result sets (CASSANDRA-9813)
 + * Add new types to Stress (CASSANDRA-9556)
 + * Add property to allow listening on broadcast interface (CASSANDRA-9748)
 + * Fix regression in split size on CqlInputFormat (CASSANDRA-10835)
 + * Better handling of SSL connection errors inter-node (CASSANDRA-10816)
 + * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474)
 + * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761)
 +Merged from 2.1:
+  * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
   * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
   * Fix pending range calculation during moves (CASSANDRA-10887)
-  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-9708)
+  * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
   * Match cassandra-loader options in COPY FROM (CASSANDRA-9303)
   * Fix binding to any address in CqlBulkRecordWriter (CASSANDRA-9309)
 - * Fix the way we replace sstables after anticompaction (CASSANDRA-10831)
   * cqlsh fails to decode utf-8 characters for text typed columns 
(CASSANDRA-10875)
   * Log error when stream session fails (CASSANDRA-9294)
   * Fix bugs in commit log archiving startup behavior (CASSANDRA-10593)



[05/13] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-13 Thread carl
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/src/java/org/apache/cassandra/service/StorageProxy.java
--
diff --cc src/java/org/apache/cassandra/service/StorageProxy.java
index e2fa270,841e980..89ac0bb
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@@ -1941,201 -1711,252 +1941,201 @@@ public class StorageProxy implements St
  }
  }
  
 -public static List getRangeSlice(AbstractRangeCommand command, 
ConsistencyLevel consistency_level)
 -throws UnavailableException, ReadFailureException, ReadTimeoutException
 +private static class SingleRangeResponse extends 
AbstractIterator implements PartitionIterator
  {
 -Tracing.trace("Computing ranges to query");
 -long startTime = System.nanoTime();
 +private final ReadCallback handler;
 +private PartitionIterator result;
  
 -Keyspace keyspace = Keyspace.open(command.keyspace);
 -List rows;
 -// now scan until we have enough results
 -try
 +private SingleRangeResponse(ReadCallback handler)
  {
 -int liveRowCount = 0;
 -boolean countLiveRows = command.countCQL3Rows() || 
command.ignoredTombstonedPartitions();
 -rows = new ArrayList<>();
 +this.handler = handler;
 +}
  
 -// when dealing with LocalStrategy keyspaces, we can skip the 
range splitting and merging (which can be
 -// expensive in clusters with vnodes)
 -List> ranges;
 -if (keyspace.getReplicationStrategy() instanceof LocalStrategy)
 -ranges = command.keyRange.unwrap();
 -else
 -ranges = getRestrictedRanges(command.keyRange);
 -
 -// determine the number of rows to be fetched and the concurrency 
factor
 -int rowsToBeFetched = command.limit();
 -int concurrencyFactor;
 -if (command.requiresScanningAllRanges())
 -{
 -// all nodes must be queried
 -rowsToBeFetched *= ranges.size();
 -concurrencyFactor = ranges.size();
 -logger.debug("Requested rows: {}, ranges.size(): {}; 
concurrent range requests: {}",
 - command.limit(),
 - ranges.size(),
 - concurrencyFactor);
 -Tracing.trace("Submitting range requests on {} ranges with a 
concurrency of {}",
 -  ranges.size(), concurrencyFactor);
 +private void waitForResponse() throws ReadTimeoutException
 +{
 +if (result != null)
 +return;
 +
 +try
 +{
 +result = handler.get();
  }
 -else
 +catch (DigestMismatchException e)
  {
 -// our estimate of how many result rows there will be 
per-range
 -float resultRowsPerRange = 
estimateResultRowsPerRange(command, keyspace);
 -// underestimate how many rows we will get per-range in order 
to increase the likelihood that we'll
 -// fetch enough rows in the first round
 -resultRowsPerRange -= resultRowsPerRange * 
CONCURRENT_SUBREQUESTS_MARGIN;
 -concurrencyFactor = resultRowsPerRange == 0.0
 -  ? 1
 -  : Math.max(1, Math.min(ranges.size(), (int) 
Math.ceil(command.limit() / resultRowsPerRange)));
 -
 -logger.trace("Estimated result rows per range: {}; requested 
rows: {}, ranges.size(): {}; concurrent range requests: {}",
 - resultRowsPerRange,
 - command.limit(),
 - ranges.size(),
 - concurrencyFactor);
 -Tracing.trace("Submitting range requests on {} ranges with a 
concurrency of {} ({} rows per range expected)",
 -  ranges.size(),
 -  concurrencyFactor,
 -  resultRowsPerRange);
 -}
 -
 -boolean haveSufficientRows = false;
 -int i = 0;
 -AbstractBounds nextRange = null;
 -List nextEndpoints = null;
 -List nextFilteredEndpoints = null;
 -while (i < ranges.size())
 -{
 -List>>> scanHandlers = new ArrayList<>(concurrencyFactor);
 -int concurrentFetchStartingIndex = i;
 -int concurrentRequests = 0;
 -while ((i - concurrentFetchStartingIndex) < concurrencyFactor)
 -{
 -AbstractBounds range = nextRange == null
 -  ? 

[07/13] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-13 Thread carl
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/src/java/org/apache/cassandra/service/StorageProxy.java
--
diff --cc src/java/org/apache/cassandra/service/StorageProxy.java
index e2fa270,841e980..89ac0bb
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@@ -1941,201 -1711,252 +1941,201 @@@ public class StorageProxy implements St
  }
  }
  
 -public static List getRangeSlice(AbstractRangeCommand command, 
ConsistencyLevel consistency_level)
 -throws UnavailableException, ReadFailureException, ReadTimeoutException
 +private static class SingleRangeResponse extends 
AbstractIterator implements PartitionIterator
  {
 -Tracing.trace("Computing ranges to query");
 -long startTime = System.nanoTime();
 +private final ReadCallback handler;
 +private PartitionIterator result;
  
 -Keyspace keyspace = Keyspace.open(command.keyspace);
 -List rows;
 -// now scan until we have enough results
 -try
 +private SingleRangeResponse(ReadCallback handler)
  {
 -int liveRowCount = 0;
 -boolean countLiveRows = command.countCQL3Rows() || 
command.ignoredTombstonedPartitions();
 -rows = new ArrayList<>();
 +this.handler = handler;
 +}
  
 -// when dealing with LocalStrategy keyspaces, we can skip the 
range splitting and merging (which can be
 -// expensive in clusters with vnodes)
 -List> ranges;
 -if (keyspace.getReplicationStrategy() instanceof LocalStrategy)
 -ranges = command.keyRange.unwrap();
 -else
 -ranges = getRestrictedRanges(command.keyRange);
 -
 -// determine the number of rows to be fetched and the concurrency 
factor
 -int rowsToBeFetched = command.limit();
 -int concurrencyFactor;
 -if (command.requiresScanningAllRanges())
 -{
 -// all nodes must be queried
 -rowsToBeFetched *= ranges.size();
 -concurrencyFactor = ranges.size();
 -logger.debug("Requested rows: {}, ranges.size(): {}; 
concurrent range requests: {}",
 - command.limit(),
 - ranges.size(),
 - concurrencyFactor);
 -Tracing.trace("Submitting range requests on {} ranges with a 
concurrency of {}",
 -  ranges.size(), concurrencyFactor);
 +private void waitForResponse() throws ReadTimeoutException
 +{
 +if (result != null)
 +return;
 +
 +try
 +{
 +result = handler.get();
  }
 -else
 +catch (DigestMismatchException e)
  {
 -// our estimate of how many result rows there will be 
per-range
 -float resultRowsPerRange = 
estimateResultRowsPerRange(command, keyspace);
 -// underestimate how many rows we will get per-range in order 
to increase the likelihood that we'll
 -// fetch enough rows in the first round
 -resultRowsPerRange -= resultRowsPerRange * 
CONCURRENT_SUBREQUESTS_MARGIN;
 -concurrencyFactor = resultRowsPerRange == 0.0
 -  ? 1
 -  : Math.max(1, Math.min(ranges.size(), (int) 
Math.ceil(command.limit() / resultRowsPerRange)));
 -
 -logger.trace("Estimated result rows per range: {}; requested 
rows: {}, ranges.size(): {}; concurrent range requests: {}",
 - resultRowsPerRange,
 - command.limit(),
 - ranges.size(),
 - concurrencyFactor);
 -Tracing.trace("Submitting range requests on {} ranges with a 
concurrency of {} ({} rows per range expected)",
 -  ranges.size(),
 -  concurrencyFactor,
 -  resultRowsPerRange);
 -}
 -
 -boolean haveSufficientRows = false;
 -int i = 0;
 -AbstractBounds nextRange = null;
 -List nextEndpoints = null;
 -List nextFilteredEndpoints = null;
 -while (i < ranges.size())
 -{
 -List>>> scanHandlers = new ArrayList<>(concurrencyFactor);
 -int concurrentFetchStartingIndex = i;
 -int concurrentRequests = 0;
 -while ((i - concurrentFetchStartingIndex) < concurrencyFactor)
 -{
 -AbstractBounds range = nextRange == null
 -  ? 

[09/13] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-13 Thread carl
http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/src/java/org/apache/cassandra/service/StorageProxy.java
--
diff --cc src/java/org/apache/cassandra/service/StorageProxy.java
index e2fa270,841e980..89ac0bb
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@@ -1941,201 -1711,252 +1941,201 @@@ public class StorageProxy implements St
  }
  }
  
 -public static List getRangeSlice(AbstractRangeCommand command, 
ConsistencyLevel consistency_level)
 -throws UnavailableException, ReadFailureException, ReadTimeoutException
 +private static class SingleRangeResponse extends 
AbstractIterator implements PartitionIterator
  {
 -Tracing.trace("Computing ranges to query");
 -long startTime = System.nanoTime();
 +private final ReadCallback handler;
 +private PartitionIterator result;
  
 -Keyspace keyspace = Keyspace.open(command.keyspace);
 -List rows;
 -// now scan until we have enough results
 -try
 +private SingleRangeResponse(ReadCallback handler)
  {
 -int liveRowCount = 0;
 -boolean countLiveRows = command.countCQL3Rows() || 
command.ignoredTombstonedPartitions();
 -rows = new ArrayList<>();
 +this.handler = handler;
 +}
  
 -// when dealing with LocalStrategy keyspaces, we can skip the 
range splitting and merging (which can be
 -// expensive in clusters with vnodes)
 -List> ranges;
 -if (keyspace.getReplicationStrategy() instanceof LocalStrategy)
 -ranges = command.keyRange.unwrap();
 -else
 -ranges = getRestrictedRanges(command.keyRange);
 -
 -// determine the number of rows to be fetched and the concurrency 
factor
 -int rowsToBeFetched = command.limit();
 -int concurrencyFactor;
 -if (command.requiresScanningAllRanges())
 -{
 -// all nodes must be queried
 -rowsToBeFetched *= ranges.size();
 -concurrencyFactor = ranges.size();
 -logger.debug("Requested rows: {}, ranges.size(): {}; 
concurrent range requests: {}",
 - command.limit(),
 - ranges.size(),
 - concurrencyFactor);
 -Tracing.trace("Submitting range requests on {} ranges with a 
concurrency of {}",
 -  ranges.size(), concurrencyFactor);
 +private void waitForResponse() throws ReadTimeoutException
 +{
 +if (result != null)
 +return;
 +
 +try
 +{
 +result = handler.get();
  }
 -else
 +catch (DigestMismatchException e)
  {
 -// our estimate of how many result rows there will be 
per-range
 -float resultRowsPerRange = 
estimateResultRowsPerRange(command, keyspace);
 -// underestimate how many rows we will get per-range in order 
to increase the likelihood that we'll
 -// fetch enough rows in the first round
 -resultRowsPerRange -= resultRowsPerRange * 
CONCURRENT_SUBREQUESTS_MARGIN;
 -concurrencyFactor = resultRowsPerRange == 0.0
 -  ? 1
 -  : Math.max(1, Math.min(ranges.size(), (int) 
Math.ceil(command.limit() / resultRowsPerRange)));
 -
 -logger.trace("Estimated result rows per range: {}; requested 
rows: {}, ranges.size(): {}; concurrent range requests: {}",
 - resultRowsPerRange,
 - command.limit(),
 - ranges.size(),
 - concurrencyFactor);
 -Tracing.trace("Submitting range requests on {} ranges with a 
concurrency of {} ({} rows per range expected)",
 -  ranges.size(),
 -  concurrencyFactor,
 -  resultRowsPerRange);
 -}
 -
 -boolean haveSufficientRows = false;
 -int i = 0;
 -AbstractBounds nextRange = null;
 -List nextEndpoints = null;
 -List nextFilteredEndpoints = null;
 -while (i < ranges.size())
 -{
 -List>>> scanHandlers = new ArrayList<>(concurrencyFactor);
 -int concurrentFetchStartingIndex = i;
 -int concurrentRequests = 0;
 -while ((i - concurrentFetchStartingIndex) < concurrencyFactor)
 -{
 -AbstractBounds range = nextRange == null
 -  ? 

[01/13] cassandra git commit: Make sure client gets tombstone overwhelmed warning

2016-01-13 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 582bdba4b -> dbf6e62c3
  refs/heads/cassandra-3.0 0f995a2dc -> 94e7ef177
  refs/heads/cassandra-3.3 a7feb80d6 -> 93f652939
  refs/heads/trunk 3f053121f -> 5090afc7a


Make sure client gets tombstone overwhelmed warning

patch by Carl Yeksigian; reviewed by Josh McKenzie for CASSANDRA-9465


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dbf6e62c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dbf6e62c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dbf6e62c

Branch: refs/heads/cassandra-2.2
Commit: dbf6e62c382d62f9c1727ecf5afb90d131a81775
Parents: 582bdba
Author: Carl Yeksigian 
Authored: Wed Jan 13 13:22:36 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:35:59 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 229 +++
 .../AbstractTracingAwareExecutorService.java| 229 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cql3/statements/BatchStatement.java |  11 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../cassandra/db/filter/SliceQueryFilter.java   |   2 +-
 .../apache/cassandra/net/MessagingService.java  |   8 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cassandra/service/ClientWarningsTest.java   |  43 
 21 files changed, 529 insertions(+), 338 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 11f2529..6530956 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.5
+ * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
  * Fix error streaming section more than 2GB (CASSANDRA-10961)
  * (cqlsh) Also apply --connect-timeout to control connection
timeout (CASSANDRA-10959)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
--
diff --git 
a/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
new file mode 100644
index 000..088b43e
--- /dev/null
+++ 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.concurrent;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.cassandra.tracing.TraceState;
+import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.utils.concurrent.SimpleCondition;
+import org.apache.cassandra.utils.JVMStabilityInspector;
+
+import static org.apache.cassandra.tracing.Tracing.isTracing;
+
+public abstract class AbstractLoca

[04/13] cassandra git commit: Make sure client gets tombstone overwhelmed warning

2016-01-13 Thread carl
Make sure client gets tombstone overwhelmed warning

patch by Carl Yeksigian; reviewed by Josh McKenzie for CASSANDRA-9465


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dbf6e62c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dbf6e62c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dbf6e62c

Branch: refs/heads/trunk
Commit: dbf6e62c382d62f9c1727ecf5afb90d131a81775
Parents: 582bdba
Author: Carl Yeksigian 
Authored: Wed Jan 13 13:22:36 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:35:59 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 229 +++
 .../AbstractTracingAwareExecutorService.java| 229 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cql3/statements/BatchStatement.java |  11 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../cassandra/db/filter/SliceQueryFilter.java   |   2 +-
 .../apache/cassandra/net/MessagingService.java  |   8 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cassandra/service/ClientWarningsTest.java   |  43 
 21 files changed, 529 insertions(+), 338 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 11f2529..6530956 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.5
+ * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
  * Fix error streaming section more than 2GB (CASSANDRA-10961)
  * (cqlsh) Also apply --connect-timeout to control connection
timeout (CASSANDRA-10959)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
--
diff --git 
a/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
new file mode 100644
index 000..088b43e
--- /dev/null
+++ 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.concurrent;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.cassandra.tracing.TraceState;
+import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.utils.concurrent.SimpleCondition;
+import org.apache.cassandra.utils.JVMStabilityInspector;
+
+import static org.apache.cassandra.tracing.Tracing.isTracing;
+
+public abstract class AbstractLocalAwareExecutorService implements 
LocalAwareExecutorService
+{
+private static final Logger logger = 
LoggerFactory.getLogger(AbstractLocalAwareExecutorService.class);
+
+protected abstract void addTask(FutureTask futureTask);
+protected abstra

[13/13] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-01-13 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5090afc7
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5090afc7
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5090afc7

Branch: refs/heads/trunk
Commit: 5090afc7a8f7c49532ff441217614e808876be19
Parents: 3f05312 93f6529
Author: Carl Yeksigian 
Authored: Wed Jan 13 14:47:41 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:47:41 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 230 +++
 .../AbstractTracingAwareExecutorService.java| 230 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cassandra/cql3/functions/UDFunction.java|   2 +-
 .../cql3/statements/BatchStatement.java |   9 +-
 .../cql3/statements/CreateViewStatement.java|   2 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../org/apache/cassandra/db/ReadCommand.java|   2 +-
 .../apache/cassandra/net/MessagingService.java  |   7 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cql3/validation/entities/UFTest.java|   6 +-
 .../cassandra/service/ClientWarningsTest.java   |  58 +
 24 files changed, 545 insertions(+), 346 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5090afc7/CHANGES.txt
--



[11/13] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-13 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/93f65293
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/93f65293
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/93f65293

Branch: refs/heads/cassandra-3.3
Commit: 93f6529393baa83bd232c48f94b1805a996ceb9a
Parents: a7feb80 94e7ef1
Author: Carl Yeksigian 
Authored: Wed Jan 13 14:46:34 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:46:34 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 230 +++
 .../AbstractTracingAwareExecutorService.java| 230 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cassandra/cql3/functions/UDFunction.java|   2 +-
 .../cql3/statements/BatchStatement.java |   9 +-
 .../cql3/statements/CreateViewStatement.java|   2 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../org/apache/cassandra/db/ReadCommand.java|   2 +-
 .../apache/cassandra/net/MessagingService.java  |   7 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cql3/validation/entities/UFTest.java|   6 +-
 .../cassandra/service/ClientWarningsTest.java   |  58 +
 24 files changed, 545 insertions(+), 346 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/CHANGES.txt
--
diff --cc CHANGES.txt
index aae5efe,a37ec99..85bc100
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -7,29 -4,6 +7,30 @@@ Merged from 3.0
 tombstone (CASSANDRA-10743)
   * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
   * Fix potential assertion error during compaction (CASSANDRA-10944)
 +Merged from 2.2:
++ * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
 + * Fix error streaming section more than 2GB (CASSANDRA-10961)
 + * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
 + * Enable GC logging by default (CASSANDRA-10140)
 + * Optimize pending range computation (CASSANDRA-9258)
 + * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
 + * drop/alter user should be case sensitive (CASSANDRA-10817)
 +Merged from 2.1:
 + * (cqlsh) Add request timeout option to cqlsh (CASSANDRA-10686)
 + * Avoid AssertionError while submitting hint with LWT (CASSANDRA-10477)
 + * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
 + * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
 + * Fix pending range calculation during moves (CASSANDRA-10887)
 + * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
 +
 +
 +3.2
 + * Make sure tokens don't exist in several data directories (CASSANDRA-6696)
 + * Add requireAuthorization method to IAuthorizer (CASSANDRA-10852)
 + * Move static JVM options to conf/jvm.options file (CASSANDRA-10494)
 + * Fix CassandraVersion to accept x.y version string (CASSANDRA-10931)
 + * Add forceUserDefinedCleanup to allow more flexible cleanup 
(CASSANDRA-10708)
 + * (cqlsh) allow setting TTL with COPY (CASSANDRA-9494)
   * Fix counting of received sstables in streaming (CASSANDRA-10949)
   * Implement hints compression (CASSANDRA-9428)
   * Fix potential assertion error when reading static columns (CASSANDRA-10903)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apache/cassandra/db/ReadCommand.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apach

[12/13] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-01-13 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/93f65293
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/93f65293
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/93f65293

Branch: refs/heads/trunk
Commit: 93f6529393baa83bd232c48f94b1805a996ceb9a
Parents: a7feb80 94e7ef1
Author: Carl Yeksigian 
Authored: Wed Jan 13 14:46:34 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:46:34 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 230 +++
 .../AbstractTracingAwareExecutorService.java| 230 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cassandra/cql3/functions/UDFunction.java|   2 +-
 .../cql3/statements/BatchStatement.java |   9 +-
 .../cql3/statements/CreateViewStatement.java|   2 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../org/apache/cassandra/db/ReadCommand.java|   2 +-
 .../apache/cassandra/net/MessagingService.java  |   7 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cql3/validation/entities/UFTest.java|   6 +-
 .../cassandra/service/ClientWarningsTest.java   |  58 +
 24 files changed, 545 insertions(+), 346 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/CHANGES.txt
--
diff --cc CHANGES.txt
index aae5efe,a37ec99..85bc100
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -7,29 -4,6 +7,30 @@@ Merged from 3.0
 tombstone (CASSANDRA-10743)
   * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
   * Fix potential assertion error during compaction (CASSANDRA-10944)
 +Merged from 2.2:
++ * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
 + * Fix error streaming section more than 2GB (CASSANDRA-10961)
 + * Histogram buckets exposed in jmx are sorted incorrectly (CASSANDRA-10975)
 + * Enable GC logging by default (CASSANDRA-10140)
 + * Optimize pending range computation (CASSANDRA-9258)
 + * Skip commit log and saved cache directories in SSTable version startup 
check (CASSANDRA-10902)
 + * drop/alter user should be case sensitive (CASSANDRA-10817)
 +Merged from 2.1:
 + * (cqlsh) Add request timeout option to cqlsh (CASSANDRA-10686)
 + * Avoid AssertionError while submitting hint with LWT (CASSANDRA-10477)
 + * If CompactionMetadata is not in stats file, use index summary instead 
(CASSANDRA-10676)
 + * Retry sending gossip syn multiple times during shadow round 
(CASSANDRA-8072)
 + * Fix pending range calculation during moves (CASSANDRA-10887)
 + * Sane default (200Mbps) for inter-DC streaming througput (CASSANDRA-8708)
 +
 +
 +3.2
 + * Make sure tokens don't exist in several data directories (CASSANDRA-6696)
 + * Add requireAuthorization method to IAuthorizer (CASSANDRA-10852)
 + * Move static JVM options to conf/jvm.options file (CASSANDRA-10494)
 + * Fix CassandraVersion to accept x.y version string (CASSANDRA-10931)
 + * Add forceUserDefinedCleanup to allow more flexible cleanup 
(CASSANDRA-10708)
 + * (cqlsh) allow setting TTL with COPY (CASSANDRA-9494)
   * Fix counting of received sstables in streaming (CASSANDRA-10949)
   * Implement hints compression (CASSANDRA-9428)
   * Fix potential assertion error when reading static columns (CASSANDRA-10903)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apache/cassandra/db/ReadCommand.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/93f65293/src/java/org/apach

[10/13] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-13 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/94e7ef17
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/94e7ef17
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/94e7ef17

Branch: refs/heads/trunk
Commit: 94e7ef17757235cb35df70ff9a2a63e1d29d6c41
Parents: 0f995a2 dbf6e62
Author: Carl Yeksigian 
Authored: Wed Jan 13 14:45:13 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:45:13 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 230 +++
 .../AbstractTracingAwareExecutorService.java| 230 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cassandra/cql3/functions/UDFunction.java|   2 +-
 .../cql3/statements/BatchStatement.java |   9 +-
 .../cql3/statements/CreateViewStatement.java|   2 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../org/apache/cassandra/db/ReadCommand.java|   2 +-
 .../apache/cassandra/net/MessagingService.java  |   7 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cql3/validation/entities/UFTest.java|   6 +-
 .../cassandra/service/ClientWarningsTest.java   |  58 +
 24 files changed, 545 insertions(+), 346 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/CHANGES.txt
--
diff --cc CHANGES.txt
index 614d5b4,6530956..a37ec99
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,20 -1,5 +1,21 @@@
 -2.2.5
 +3.0.3
 + * Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
 + * Fix UnsupportedOperationException when reading old sstable with range
 +   tombstone (CASSANDRA-10743)
 + * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
 + * Fix potential assertion error during compaction (CASSANDRA-10944)
 + * Fix counting of received sstables in streaming (CASSANDRA-10949)
 + * Implement hints compression (CASSANDRA-9428)
 + * Fix potential assertion error when reading static columns (CASSANDRA-10903)
 + * Avoid NoSuchElementException when executing empty batch (CASSANDRA-10711)
 + * Avoid building PartitionUpdate in toString (CASSANDRA-10897)
 + * Reduce heap spent when receiving many SSTables (CASSANDRA-10797)
 + * Add back support for 3rd party auth providers to bulk loader 
(CASSANDRA-10873)
 + * Eliminate the dependency on jgrapht for UDT resolution (CASSANDRA-10653)
 + * (Hadoop) Close Clusters and Sessions in Hadoop Input/Output classes 
(CASSANDRA-10837)
 + * Fix sstableloader not working with upper case keyspace name 
(CASSANDRA-10806)
 +Merged from 2.2:
+  * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
   * Fix error streaming section more than 2GB (CASSANDRA-10961)
   * (cqlsh) Also apply --connect-timeout to control connection
 timeout (CASSANDRA-10959)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
--
diff --cc 
src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
index 000,088b43e..f47d8ac
mode 00,100644..100644
--- 
a/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
+++ 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
@@@ -1,0 -1,229 +1,230 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  * http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed 

[08/13] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-13 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/94e7ef17
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/94e7ef17
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/94e7ef17

Branch: refs/heads/cassandra-3.0
Commit: 94e7ef17757235cb35df70ff9a2a63e1d29d6c41
Parents: 0f995a2 dbf6e62
Author: Carl Yeksigian 
Authored: Wed Jan 13 14:45:13 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:45:13 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 230 +++
 .../AbstractTracingAwareExecutorService.java| 230 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cassandra/cql3/functions/UDFunction.java|   2 +-
 .../cql3/statements/BatchStatement.java |   9 +-
 .../cql3/statements/CreateViewStatement.java|   2 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../org/apache/cassandra/db/ReadCommand.java|   2 +-
 .../apache/cassandra/net/MessagingService.java  |   7 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cql3/validation/entities/UFTest.java|   6 +-
 .../cassandra/service/ClientWarningsTest.java   |  58 +
 24 files changed, 545 insertions(+), 346 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/CHANGES.txt
--
diff --cc CHANGES.txt
index 614d5b4,6530956..a37ec99
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,20 -1,5 +1,21 @@@
 -2.2.5
 +3.0.3
 + * Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
 + * Fix UnsupportedOperationException when reading old sstable with range
 +   tombstone (CASSANDRA-10743)
 + * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
 + * Fix potential assertion error during compaction (CASSANDRA-10944)
 + * Fix counting of received sstables in streaming (CASSANDRA-10949)
 + * Implement hints compression (CASSANDRA-9428)
 + * Fix potential assertion error when reading static columns (CASSANDRA-10903)
 + * Avoid NoSuchElementException when executing empty batch (CASSANDRA-10711)
 + * Avoid building PartitionUpdate in toString (CASSANDRA-10897)
 + * Reduce heap spent when receiving many SSTables (CASSANDRA-10797)
 + * Add back support for 3rd party auth providers to bulk loader 
(CASSANDRA-10873)
 + * Eliminate the dependency on jgrapht for UDT resolution (CASSANDRA-10653)
 + * (Hadoop) Close Clusters and Sessions in Hadoop Input/Output classes 
(CASSANDRA-10837)
 + * Fix sstableloader not working with upper case keyspace name 
(CASSANDRA-10806)
 +Merged from 2.2:
+  * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
   * Fix error streaming section more than 2GB (CASSANDRA-10961)
   * (cqlsh) Also apply --connect-timeout to control connection
 timeout (CASSANDRA-10959)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
--
diff --cc 
src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
index 000,088b43e..f47d8ac
mode 00,100644..100644
--- 
a/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
+++ 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
@@@ -1,0 -1,229 +1,230 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  * http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * d

[03/13] cassandra git commit: Make sure client gets tombstone overwhelmed warning

2016-01-13 Thread carl
Make sure client gets tombstone overwhelmed warning

patch by Carl Yeksigian; reviewed by Josh McKenzie for CASSANDRA-9465


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dbf6e62c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dbf6e62c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dbf6e62c

Branch: refs/heads/cassandra-3.3
Commit: dbf6e62c382d62f9c1727ecf5afb90d131a81775
Parents: 582bdba
Author: Carl Yeksigian 
Authored: Wed Jan 13 13:22:36 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:35:59 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 229 +++
 .../AbstractTracingAwareExecutorService.java| 229 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cql3/statements/BatchStatement.java |  11 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../cassandra/db/filter/SliceQueryFilter.java   |   2 +-
 .../apache/cassandra/net/MessagingService.java  |   8 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cassandra/service/ClientWarningsTest.java   |  43 
 21 files changed, 529 insertions(+), 338 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 11f2529..6530956 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.5
+ * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
  * Fix error streaming section more than 2GB (CASSANDRA-10961)
  * (cqlsh) Also apply --connect-timeout to control connection
timeout (CASSANDRA-10959)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
--
diff --git 
a/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
new file mode 100644
index 000..088b43e
--- /dev/null
+++ 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.concurrent;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.cassandra.tracing.TraceState;
+import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.utils.concurrent.SimpleCondition;
+import org.apache.cassandra.utils.JVMStabilityInspector;
+
+import static org.apache.cassandra.tracing.Tracing.isTracing;
+
+public abstract class AbstractLocalAwareExecutorService implements 
LocalAwareExecutorService
+{
+private static final Logger logger = 
LoggerFactory.getLogger(AbstractLocalAwareExecutorService.class);
+
+protected abstract void addTask(FutureTask futureTask);
+protected abstra

[02/13] cassandra git commit: Make sure client gets tombstone overwhelmed warning

2016-01-13 Thread carl
Make sure client gets tombstone overwhelmed warning

patch by Carl Yeksigian; reviewed by Josh McKenzie for CASSANDRA-9465


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dbf6e62c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dbf6e62c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dbf6e62c

Branch: refs/heads/cassandra-3.0
Commit: dbf6e62c382d62f9c1727ecf5afb90d131a81775
Parents: 582bdba
Author: Carl Yeksigian 
Authored: Wed Jan 13 13:22:36 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:35:59 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 229 +++
 .../AbstractTracingAwareExecutorService.java| 229 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cql3/statements/BatchStatement.java |  11 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../cassandra/db/filter/SliceQueryFilter.java   |   2 +-
 .../apache/cassandra/net/MessagingService.java  |   8 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cassandra/service/ClientWarningsTest.java   |  43 
 21 files changed, 529 insertions(+), 338 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 11f2529..6530956 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.5
+ * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
  * Fix error streaming section more than 2GB (CASSANDRA-10961)
  * (cqlsh) Also apply --connect-timeout to control connection
timeout (CASSANDRA-10959)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dbf6e62c/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
--
diff --git 
a/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
new file mode 100644
index 000..088b43e
--- /dev/null
+++ 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cassandra.concurrent;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.cassandra.tracing.TraceState;
+import org.apache.cassandra.tracing.Tracing;
+import org.apache.cassandra.utils.concurrent.SimpleCondition;
+import org.apache.cassandra.utils.JVMStabilityInspector;
+
+import static org.apache.cassandra.tracing.Tracing.isTracing;
+
+public abstract class AbstractLocalAwareExecutorService implements 
LocalAwareExecutorService
+{
+private static final Logger logger = 
LoggerFactory.getLogger(AbstractLocalAwareExecutorService.class);
+
+protected abstract void addTask(FutureTask futureTask);
+protected abstra

[06/13] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2016-01-13 Thread carl
Merge branch 'cassandra-2.2' into cassandra-3.0


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/94e7ef17
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/94e7ef17
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/94e7ef17

Branch: refs/heads/cassandra-3.3
Commit: 94e7ef17757235cb35df70ff9a2a63e1d29d6c41
Parents: 0f995a2 dbf6e62
Author: Carl Yeksigian 
Authored: Wed Jan 13 14:45:13 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Jan 13 14:45:13 2016 -0500

--
 CHANGES.txt |   1 +
 .../AbstractLocalAwareExecutorService.java  | 230 +++
 .../AbstractTracingAwareExecutorService.java| 230 ---
 .../DebuggableThreadPoolExecutor.java   |  48 ++--
 .../cassandra/concurrent/ExecutorLocal.java |  44 
 .../cassandra/concurrent/ExecutorLocals.java|  84 +++
 .../concurrent/LocalAwareExecutorService.java   |  34 +++
 .../cassandra/concurrent/SEPExecutor.java   |   3 +-
 .../concurrent/SharedExecutorPool.java  |   2 +-
 .../cassandra/concurrent/StageManager.java  |  12 +-
 .../concurrent/TracingAwareExecutorService.java |  36 ---
 .../cassandra/cql3/functions/UDFunction.java|   2 +-
 .../cql3/statements/BatchStatement.java |   9 +-
 .../cql3/statements/CreateViewStatement.java|   2 +-
 .../cql3/statements/SelectStatement.java|   4 +-
 .../org/apache/cassandra/db/ReadCommand.java|   2 +-
 .../apache/cassandra/net/MessagingService.java  |   7 +-
 .../apache/cassandra/service/ClientWarn.java|  62 +++--
 .../apache/cassandra/service/StorageProxy.java  |   2 +-
 .../org/apache/cassandra/tracing/Tracing.java   |   3 +-
 .../org/apache/cassandra/transport/Message.java |   6 +-
 .../transport/RequestThreadPoolExecutor.java|   4 +-
 .../cql3/validation/entities/UFTest.java|   6 +-
 .../cassandra/service/ClientWarningsTest.java   |  58 +
 24 files changed, 545 insertions(+), 346 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/CHANGES.txt
--
diff --cc CHANGES.txt
index 614d5b4,6530956..a37ec99
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,20 -1,5 +1,21 @@@
 -2.2.5
 +3.0.3
 + * Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
 + * Fix UnsupportedOperationException when reading old sstable with range
 +   tombstone (CASSANDRA-10743)
 + * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
 + * Fix potential assertion error during compaction (CASSANDRA-10944)
 + * Fix counting of received sstables in streaming (CASSANDRA-10949)
 + * Implement hints compression (CASSANDRA-9428)
 + * Fix potential assertion error when reading static columns (CASSANDRA-10903)
 + * Avoid NoSuchElementException when executing empty batch (CASSANDRA-10711)
 + * Avoid building PartitionUpdate in toString (CASSANDRA-10897)
 + * Reduce heap spent when receiving many SSTables (CASSANDRA-10797)
 + * Add back support for 3rd party auth providers to bulk loader 
(CASSANDRA-10873)
 + * Eliminate the dependency on jgrapht for UDT resolution (CASSANDRA-10653)
 + * (Hadoop) Close Clusters and Sessions in Hadoop Input/Output classes 
(CASSANDRA-10837)
 + * Fix sstableloader not working with upper case keyspace name 
(CASSANDRA-10806)
 +Merged from 2.2:
+  * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)
   * Fix error streaming section more than 2GB (CASSANDRA-10961)
   * (cqlsh) Also apply --connect-timeout to control connection
 timeout (CASSANDRA-10959)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/94e7ef17/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
--
diff --cc 
src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
index 000,088b43e..f47d8ac
mode 00,100644..100644
--- 
a/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
+++ 
b/src/java/org/apache/cassandra/concurrent/AbstractLocalAwareExecutorService.java
@@@ -1,0 -1,229 +1,230 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  * http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * d

cassandra git commit: Add metric for number of dropped mutations

2016-01-15 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/trunk 6148f5214 -> 66d3428e3


Add metric for number of dropped mutations

patch by Anubhav Kale; reviewed by Paulo Motta for CASSANDRA-10866


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/66d3428e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/66d3428e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/66d3428e

Branch: refs/heads/trunk
Commit: 66d3428e3fe64851fa7587ee69b53e20bb7c09b5
Parents: 6148f52
Author: anubhavkale 
Authored: Fri Jan 15 10:20:42 2016 -0500
Committer: Carl Yeksigian 
Committed: Fri Jan 15 10:20:42 2016 -0500

--
 CHANGES.txt |  1 +
 .../apache/cassandra/metrics/TableMetrics.java  |  4 +++
 .../apache/cassandra/net/MessagingService.java  | 27 
 .../apache/cassandra/service/StorageProxy.java  | 22 
 .../org/apache/cassandra/tools/NodeProbe.java   |  1 +
 .../cassandra/tools/nodetool/TableStats.java|  1 +
 6 files changed, 51 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/66d3428e/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 61284f2..33b9f9b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.4
+ * Add metric for number of dropped mutations (CASSANDRA-10866)
  * Simplify row cache invalidation code (CASSANDRA-10396)
  * Support user-defined compaction through nodetool (CASSANDRA-10660)
  * Stripe view locks by key and table ID to reduce contention (CASSANDRA-10981)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/66d3428e/src/java/org/apache/cassandra/metrics/TableMetrics.java
--
diff --git a/src/java/org/apache/cassandra/metrics/TableMetrics.java 
b/src/java/org/apache/cassandra/metrics/TableMetrics.java
index c8c214e..6492833 100644
--- a/src/java/org/apache/cassandra/metrics/TableMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/TableMetrics.java
@@ -142,6 +142,9 @@ public class TableMetrics
 /** Time spent waiting for free memtable space, either on- or off-heap */
 public final Histogram waitingOnFreeMemtableSpace;
 
+/** Dropped Mutations Count */
+public final Counter droppedMutations;
+
 private final MetricNameFactory factory;
 private final MetricNameFactory aliasFactory;
 private static final MetricNameFactory globalFactory = new 
AllTableMetricNameFactory("Table");
@@ -621,6 +624,7 @@ public class TableMetrics
 rowCacheHitOutOfRange = createTableCounter("RowCacheHitOutOfRange");
 rowCacheHit = createTableCounter("RowCacheHit");
 rowCacheMiss = createTableCounter("RowCacheMiss");
+droppedMutations = createTableCounter("DroppedMutations");
 
 casPrepare = new LatencyMetrics(factory, "CasPrepare", 
cfs.keyspace.metric.casPrepare);
 casPropose = new LatencyMetrics(factory, "CasPropose", 
cfs.keyspace.metric.casPropose);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/66d3428e/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index 76f4967..2bfa46c 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -953,6 +953,15 @@ public final class MessagingService implements 
MessagingServiceMBean
 return versions.containsKey(endpoint);
 }
 
+public void incrementDroppedMutations(Optional mutationOpt, 
long timeTaken)
+{
+if (mutationOpt.isPresent())
+{
+updateDroppedMutationCount(mutationOpt.get());
+}
+incrementDroppedMessages(Verb.MUTATION, timeTaken);
+}
+
 public void incrementDroppedMessages(Verb verb)
 {
 incrementDroppedMessages(verb, false);
@@ -965,6 +974,10 @@ public final class MessagingService implements 
MessagingServiceMBean
 
 public void incrementDroppedMessages(MessageIn message, long timeTaken)
 {
+if (message.payload instanceof IMutation)
+{
+updateDroppedMutationCount((IMutation) message.payload);
+}
 incrementDroppedMessages(message.verb, timeTaken, 
message.constructionTime.isCrossNode);
 }
 
@@ -980,6 +993,20 @@ public final class MessagingService implements 
MessagingServiceMBean
 incrementDroppedMessages(droppedMessagesMap.get(verb), 
isCrossNodeTimeout);
 }
 
+private void updateDroppedMutationCoun

[3/6] cassandra git commit: Mutations do not block for completion under view lock contention

2016-02-01 Thread carl
Mutations do not block for completion under view lock contention

Patch by Carl Yeksigian; reviewed by Tyler Hobbs for CASSANDRA-10779


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/839a5bab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/839a5bab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/839a5bab

Branch: refs/heads/trunk
Commit: 839a5bab2a7f5385a878e5dc5f8b01bda28fa777
Parents: b554cb3
Author: Carl Yeksigian 
Authored: Mon Feb 1 16:51:15 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 16:59:57 2016 -0500

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/db/Keyspace.java  | 32 +---
 src/java/org/apache/cassandra/db/Mutation.java  | 19 ++--
 .../cassandra/db/MutationVerbHandler.java   | 25 ---
 .../db/commitlog/CommitLogReplayer.java |  7 +++--
 .../cassandra/service/paxos/PaxosState.java | 12 ++--
 6 files changed, 73 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/839a5bab/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 7a42916..bed8703 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * Mutations do not block for completion under view lock contention 
(CASSANDRA-10779)
  * Invalidate legacy schema tables when unloading them (CASSANDRA-11071)
  * (cqlsh) handle INSERT and UPDATE statements with LWT conditions correctly
(CASSANDRA-11003)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/839a5bab/src/java/org/apache/cassandra/db/Keyspace.java
--
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java 
b/src/java/org/apache/cassandra/db/Keyspace.java
index 7b4f79b..2b62f0e 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -379,19 +379,19 @@ public class Keyspace
 }
 }
 
-public void apply(Mutation mutation, boolean writeCommitLog)
+public CompletableFuture apply(Mutation mutation, boolean 
writeCommitLog)
 {
-apply(mutation, writeCommitLog, true, false);
+return apply(mutation, writeCommitLog, true, false, null);
 }
 
-public void apply(Mutation mutation, boolean writeCommitLog, boolean 
updateIndexes)
+public CompletableFuture apply(Mutation mutation, boolean 
writeCommitLog, boolean updateIndexes)
 {
-apply(mutation, writeCommitLog, updateIndexes, false);
+return apply(mutation, writeCommitLog, updateIndexes, false, null);
 }
 
-public void applyFromCommitLog(Mutation mutation)
+public CompletableFuture applyFromCommitLog(Mutation mutation)
 {
-apply(mutation, false, true, true);
+return apply(mutation, false, true, true, null);
 }
 
 /**
@@ -403,13 +403,18 @@ public class Keyspace
  * @param updateIndexes  false to disable index updates (used by 
CollationController "defragmenting")
  * @param isClReplay true if caller is the commitlog replayer
  */
-public void apply(final Mutation mutation, final boolean writeCommitLog, 
boolean updateIndexes, boolean isClReplay)
+public CompletableFuture apply(final Mutation mutation,
+  final boolean writeCommitLog,
+  boolean updateIndexes,
+  boolean isClReplay,
+  CompletableFuture future)
 {
 if (TEST_FAIL_WRITES && metadata.name.equals(TEST_FAIL_WRITES_KS))
 throw new RuntimeException("Testing write failures");
 
 Lock lock = null;
 boolean requiresViewUpdate = updateIndexes && 
viewManager.updatesAffectView(Collections.singleton(mutation), false);
+final CompletableFuture mark = future == null ? new 
CompletableFuture<>() : future;
 
 if (requiresViewUpdate)
 {
@@ -422,7 +427,10 @@ public class Keyspace
 {
 logger.trace("Could not acquire lock for {}", 
ByteBufferUtil.bytesToHex(mutation.key().getKey()));
 Tracing.trace("Could not acquire MV lock");
-throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);
+if (future != null)
+future.completeExceptionally(new 
WriteTimeoutException(WriteType.VIEW, ConsistencyLevel.LOCAL_ONE, 0, 1));
+else
+throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);

[6/6] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-02-01 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6e7d739d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6e7d739d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6e7d739d

Branch: refs/heads/trunk
Commit: 6e7d739d12f6e7cab5fc9d33a28b40ad150c84e6
Parents: 4a241f6 2e965f0
Author: Carl Yeksigian 
Authored: Mon Feb 1 17:04:15 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 17:04:15 2016 -0500

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/db/Keyspace.java  | 32 +---
 src/java/org/apache/cassandra/db/Mutation.java  | 19 ++--
 .../cassandra/db/MutationVerbHandler.java   | 25 ---
 .../db/commitlog/CommitLogReplayer.java |  4 ++-
 .../cassandra/service/paxos/PaxosState.java | 12 ++--
 6 files changed, 72 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6e7d739d/CHANGES.txt
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6e7d739d/src/java/org/apache/cassandra/db/Keyspace.java
--
diff --cc src/java/org/apache/cassandra/db/Keyspace.java
index 6122479,2b62f0e..72bcc82
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@@ -423,48 -412,25 +427,52 @@@ public class Keyspac
  if (TEST_FAIL_WRITES && metadata.name.equals(TEST_FAIL_WRITES_KS))
  throw new RuntimeException("Testing write failures");
  
 -Lock lock = null;
 +Lock[] locks = null;
  boolean requiresViewUpdate = updateIndexes && 
viewManager.updatesAffectView(Collections.singleton(mutation), false);
+ final CompletableFuture mark = future == null ? new 
CompletableFuture<>() : future;
  
  if (requiresViewUpdate)
  {
  mutation.viewLockAcquireStart.compareAndSet(0L, 
System.currentTimeMillis());
 -lock = ViewManager.acquireLockFor(mutation.key().getKey());
  
 -if (lock == null)
 +// the order of lock acquisition doesn't matter (from a deadlock 
perspective) because we only use tryLock()
 +Collection columnFamilyIds = mutation.getColumnFamilyIds();
 +Iterator idIterator = columnFamilyIds.iterator();
 +locks = new Lock[columnFamilyIds.size()];
 +
 +for (int i = 0; i < columnFamilyIds.size(); i++)
  {
 -if ((System.currentTimeMillis() - mutation.createdAt) > 
DatabaseDescriptor.getWriteRpcTimeout())
 +UUID cfid = idIterator.next();
 +int lockKey = Objects.hash(mutation.key().getKey(), cfid);
 +Lock lock = ViewManager.acquireLockFor(lockKey);
 +if (lock == null)
  {
 -logger.trace("Could not acquire lock for {}", 
ByteBufferUtil.bytesToHex(mutation.key().getKey()));
 -Tracing.trace("Could not acquire MV lock");
 -if (future != null)
 -future.completeExceptionally(new 
WriteTimeoutException(WriteType.VIEW, ConsistencyLevel.LOCAL_ONE, 0, 1));
 +// we will either time out or retry, so release all 
acquired locks
 +for (int j = 0; j < i; j++)
 +locks[j].unlock();
 +
 +if ((System.currentTimeMillis() - mutation.createdAt) > 
DatabaseDescriptor.getWriteRpcTimeout())
 +{
 +logger.trace("Could not acquire lock for {} and table 
{}", ByteBufferUtil.bytesToHex(mutation.key().getKey()), 
columnFamilyStores.get(cfid).name);
 +Tracing.trace("Could not acquire MV lock");
- throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);
++if (future != null)
++future.completeExceptionally(new 
WriteTimeoutException(WriteType.VIEW, ConsistencyLevel.LOCAL_ONE, 0, 1));
++else
++throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);
 +}
  else
 -throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);
 +{
 +// This view update can't happen right now. so rather 
than keep this thread busy
 +// we will re-apply ourself t

[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-02-01 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2e965f0e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2e965f0e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2e965f0e

Branch: refs/heads/trunk
Commit: 2e965f0e43ef0d7d282338fca130b4b545effe7b
Parents: 4d5873d 839a5ba
Author: Carl Yeksigian 
Authored: Mon Feb 1 17:01:03 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 17:01:03 2016 -0500

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/db/Keyspace.java  | 32 +---
 src/java/org/apache/cassandra/db/Mutation.java  | 19 ++--
 .../cassandra/db/MutationVerbHandler.java   | 25 ---
 .../db/commitlog/CommitLogReplayer.java |  4 ++-
 .../cassandra/service/paxos/PaxosState.java | 12 ++--
 6 files changed, 72 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e965f0e/CHANGES.txt
--
diff --cc CHANGES.txt
index aa4f981,bed8703..bad296b
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
 -3.0.3
 +3.3
 + * Avoid infinite loop if owned range is smaller than number of
 +   data dirs (CASSANDRA-11034)
 + * Avoid bootstrap hanging when existing nodes have no data to stream 
(CASSANDRA-11010)
 +Merged from 3.0:
+  * Mutations do not block for completion under view lock contention 
(CASSANDRA-10779)
   * Invalidate legacy schema tables when unloading them (CASSANDRA-11071)
   * (cqlsh) handle INSERT and UPDATE statements with LWT conditions correctly
 (CASSANDRA-11003)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e965f0e/src/java/org/apache/cassandra/db/Mutation.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e965f0e/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--
diff --cc src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index e97b36e,b4472ed..3a9f5e6
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@@ -88,65 -84,6 +90,65 @@@ public class CommitLogReplaye
  private final ReplayFilter replayFilter;
  private final CommitLogArchiver archiver;
  
 +/*
 + * Wrapper around initiating mutations read from the log to make it 
possible
 + * to spy on initiated mutations for test
 + */
 +@VisibleForTesting
 +public static class MutationInitiator
 +{
 +protected Future initiateMutation(final Mutation mutation,
 +   final long segmentId,
 +   final int serializedSize,
 +   final long entryLocation,
 +   final CommitLogReplayer 
clr)
 +{
 +Runnable runnable = new WrappedRunnable()
 +{
 +public void runMayThrow() throws IOException
 +{
 +if 
(Schema.instance.getKSMetaData(mutation.getKeyspaceName()) == null)
 +return;
 +if (clr.pointInTimeExceeded(mutation))
 +return;
 +
 +final Keyspace keyspace = 
Keyspace.open(mutation.getKeyspaceName());
 +
 +// Rebuild the mutation, omitting column families that
 +//a) the user has requested that we ignore,
 +//b) have already been flushed,
 +// or c) are part of a cf that was dropped.
 +// Keep in mind that the cf.name() is suspect. do every 
thing based on the cfid instead.
 +Mutation newMutation = null;
 +for (PartitionUpdate update : 
clr.replayFilter.filter(mutation))
 +{
 +if (Schema.instance.getCF(update.metadata().cfId) == 
null)
 +continue; // dropped
 +
 +ReplayPosition rp = 
clr.cfPositions.get(update.metadata().cfId);
 +
 +// replay if current segment is newer than last 
flushed one or,
 +// if it is the last known segment, if we are after 
the replay position
 +if (segmentId > rp.segment || (segmentId == 
rp.segment && entryLocation > rp.position))
 +{
 +if (newMutation == null)
 +   

[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-02-01 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2e965f0e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2e965f0e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2e965f0e

Branch: refs/heads/cassandra-3.3
Commit: 2e965f0e43ef0d7d282338fca130b4b545effe7b
Parents: 4d5873d 839a5ba
Author: Carl Yeksigian 
Authored: Mon Feb 1 17:01:03 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 17:01:03 2016 -0500

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/db/Keyspace.java  | 32 +---
 src/java/org/apache/cassandra/db/Mutation.java  | 19 ++--
 .../cassandra/db/MutationVerbHandler.java   | 25 ---
 .../db/commitlog/CommitLogReplayer.java |  4 ++-
 .../cassandra/service/paxos/PaxosState.java | 12 ++--
 6 files changed, 72 insertions(+), 21 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e965f0e/CHANGES.txt
--
diff --cc CHANGES.txt
index aa4f981,bed8703..bad296b
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,8 -1,5 +1,9 @@@
 -3.0.3
 +3.3
 + * Avoid infinite loop if owned range is smaller than number of
 +   data dirs (CASSANDRA-11034)
 + * Avoid bootstrap hanging when existing nodes have no data to stream 
(CASSANDRA-11010)
 +Merged from 3.0:
+  * Mutations do not block for completion under view lock contention 
(CASSANDRA-10779)
   * Invalidate legacy schema tables when unloading them (CASSANDRA-11071)
   * (cqlsh) handle INSERT and UPDATE statements with LWT conditions correctly
 (CASSANDRA-11003)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e965f0e/src/java/org/apache/cassandra/db/Mutation.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e965f0e/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--
diff --cc src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index e97b36e,b4472ed..3a9f5e6
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@@ -88,65 -84,6 +90,65 @@@ public class CommitLogReplaye
  private final ReplayFilter replayFilter;
  private final CommitLogArchiver archiver;
  
 +/*
 + * Wrapper around initiating mutations read from the log to make it 
possible
 + * to spy on initiated mutations for test
 + */
 +@VisibleForTesting
 +public static class MutationInitiator
 +{
 +protected Future initiateMutation(final Mutation mutation,
 +   final long segmentId,
 +   final int serializedSize,
 +   final long entryLocation,
 +   final CommitLogReplayer 
clr)
 +{
 +Runnable runnable = new WrappedRunnable()
 +{
 +public void runMayThrow() throws IOException
 +{
 +if 
(Schema.instance.getKSMetaData(mutation.getKeyspaceName()) == null)
 +return;
 +if (clr.pointInTimeExceeded(mutation))
 +return;
 +
 +final Keyspace keyspace = 
Keyspace.open(mutation.getKeyspaceName());
 +
 +// Rebuild the mutation, omitting column families that
 +//a) the user has requested that we ignore,
 +//b) have already been flushed,
 +// or c) are part of a cf that was dropped.
 +// Keep in mind that the cf.name() is suspect. do every 
thing based on the cfid instead.
 +Mutation newMutation = null;
 +for (PartitionUpdate update : 
clr.replayFilter.filter(mutation))
 +{
 +if (Schema.instance.getCF(update.metadata().cfId) == 
null)
 +continue; // dropped
 +
 +ReplayPosition rp = 
clr.cfPositions.get(update.metadata().cfId);
 +
 +// replay if current segment is newer than last 
flushed one or,
 +// if it is the last known segment, if we are after 
the replay position
 +if (segmentId > rp.segment || (segmentId == 
rp.segment && entryLocation > rp.position))
 +{
 +   

[1/6] cassandra git commit: Mutations do not block for completion under view lock contention

2016-02-01 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 b554cb3da -> 839a5bab2
  refs/heads/cassandra-3.3 4d5873d81 -> 2e965f0e4
  refs/heads/trunk 4a241f626 -> 6e7d739d1


Mutations do not block for completion under view lock contention

Patch by Carl Yeksigian; reviewed by Tyler Hobbs for CASSANDRA-10779


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/839a5bab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/839a5bab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/839a5bab

Branch: refs/heads/cassandra-3.0
Commit: 839a5bab2a7f5385a878e5dc5f8b01bda28fa777
Parents: b554cb3
Author: Carl Yeksigian 
Authored: Mon Feb 1 16:51:15 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 16:59:57 2016 -0500

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/db/Keyspace.java  | 32 +---
 src/java/org/apache/cassandra/db/Mutation.java  | 19 ++--
 .../cassandra/db/MutationVerbHandler.java   | 25 ---
 .../db/commitlog/CommitLogReplayer.java |  7 +++--
 .../cassandra/service/paxos/PaxosState.java | 12 ++--
 6 files changed, 73 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/839a5bab/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 7a42916..bed8703 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * Mutations do not block for completion under view lock contention 
(CASSANDRA-10779)
  * Invalidate legacy schema tables when unloading them (CASSANDRA-11071)
  * (cqlsh) handle INSERT and UPDATE statements with LWT conditions correctly
(CASSANDRA-11003)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/839a5bab/src/java/org/apache/cassandra/db/Keyspace.java
--
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java 
b/src/java/org/apache/cassandra/db/Keyspace.java
index 7b4f79b..2b62f0e 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -379,19 +379,19 @@ public class Keyspace
 }
 }
 
-public void apply(Mutation mutation, boolean writeCommitLog)
+public CompletableFuture apply(Mutation mutation, boolean 
writeCommitLog)
 {
-apply(mutation, writeCommitLog, true, false);
+return apply(mutation, writeCommitLog, true, false, null);
 }
 
-public void apply(Mutation mutation, boolean writeCommitLog, boolean 
updateIndexes)
+public CompletableFuture apply(Mutation mutation, boolean 
writeCommitLog, boolean updateIndexes)
 {
-apply(mutation, writeCommitLog, updateIndexes, false);
+return apply(mutation, writeCommitLog, updateIndexes, false, null);
 }
 
-public void applyFromCommitLog(Mutation mutation)
+public CompletableFuture applyFromCommitLog(Mutation mutation)
 {
-apply(mutation, false, true, true);
+return apply(mutation, false, true, true, null);
 }
 
 /**
@@ -403,13 +403,18 @@ public class Keyspace
  * @param updateIndexes  false to disable index updates (used by 
CollationController "defragmenting")
  * @param isClReplay true if caller is the commitlog replayer
  */
-public void apply(final Mutation mutation, final boolean writeCommitLog, 
boolean updateIndexes, boolean isClReplay)
+public CompletableFuture apply(final Mutation mutation,
+  final boolean writeCommitLog,
+  boolean updateIndexes,
+  boolean isClReplay,
+  CompletableFuture future)
 {
 if (TEST_FAIL_WRITES && metadata.name.equals(TEST_FAIL_WRITES_KS))
 throw new RuntimeException("Testing write failures");
 
 Lock lock = null;
 boolean requiresViewUpdate = updateIndexes && 
viewManager.updatesAffectView(Collections.singleton(mutation), false);
+final CompletableFuture mark = future == null ? new 
CompletableFuture<>() : future;
 
 if (requiresViewUpdate)
 {
@@ -422,7 +427,10 @@ public class Keyspace
 {
 logger.trace("Could not acquire lock for {}", 
ByteBufferUtil.bytesToHex(mutation.key().getKey()));
 Tracing.trace("Could not acquire MV lock");
-throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);
+if (future != null)
+future.completeExceptionally(new 
WriteTimeoutException(WriteT

[2/6] cassandra git commit: Mutations do not block for completion under view lock contention

2016-02-01 Thread carl
Mutations do not block for completion under view lock contention

Patch by Carl Yeksigian; reviewed by Tyler Hobbs for CASSANDRA-10779


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/839a5bab
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/839a5bab
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/839a5bab

Branch: refs/heads/cassandra-3.3
Commit: 839a5bab2a7f5385a878e5dc5f8b01bda28fa777
Parents: b554cb3
Author: Carl Yeksigian 
Authored: Mon Feb 1 16:51:15 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 16:59:57 2016 -0500

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/db/Keyspace.java  | 32 +---
 src/java/org/apache/cassandra/db/Mutation.java  | 19 ++--
 .../cassandra/db/MutationVerbHandler.java   | 25 ---
 .../db/commitlog/CommitLogReplayer.java |  7 +++--
 .../cassandra/service/paxos/PaxosState.java | 12 ++--
 6 files changed, 73 insertions(+), 23 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/839a5bab/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 7a42916..bed8703 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.3
+ * Mutations do not block for completion under view lock contention 
(CASSANDRA-10779)
  * Invalidate legacy schema tables when unloading them (CASSANDRA-11071)
  * (cqlsh) handle INSERT and UPDATE statements with LWT conditions correctly
(CASSANDRA-11003)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/839a5bab/src/java/org/apache/cassandra/db/Keyspace.java
--
diff --git a/src/java/org/apache/cassandra/db/Keyspace.java 
b/src/java/org/apache/cassandra/db/Keyspace.java
index 7b4f79b..2b62f0e 100644
--- a/src/java/org/apache/cassandra/db/Keyspace.java
+++ b/src/java/org/apache/cassandra/db/Keyspace.java
@@ -379,19 +379,19 @@ public class Keyspace
 }
 }
 
-public void apply(Mutation mutation, boolean writeCommitLog)
+public CompletableFuture apply(Mutation mutation, boolean 
writeCommitLog)
 {
-apply(mutation, writeCommitLog, true, false);
+return apply(mutation, writeCommitLog, true, false, null);
 }
 
-public void apply(Mutation mutation, boolean writeCommitLog, boolean 
updateIndexes)
+public CompletableFuture apply(Mutation mutation, boolean 
writeCommitLog, boolean updateIndexes)
 {
-apply(mutation, writeCommitLog, updateIndexes, false);
+return apply(mutation, writeCommitLog, updateIndexes, false, null);
 }
 
-public void applyFromCommitLog(Mutation mutation)
+public CompletableFuture applyFromCommitLog(Mutation mutation)
 {
-apply(mutation, false, true, true);
+return apply(mutation, false, true, true, null);
 }
 
 /**
@@ -403,13 +403,18 @@ public class Keyspace
  * @param updateIndexes  false to disable index updates (used by 
CollationController "defragmenting")
  * @param isClReplay true if caller is the commitlog replayer
  */
-public void apply(final Mutation mutation, final boolean writeCommitLog, 
boolean updateIndexes, boolean isClReplay)
+public CompletableFuture apply(final Mutation mutation,
+  final boolean writeCommitLog,
+  boolean updateIndexes,
+  boolean isClReplay,
+  CompletableFuture future)
 {
 if (TEST_FAIL_WRITES && metadata.name.equals(TEST_FAIL_WRITES_KS))
 throw new RuntimeException("Testing write failures");
 
 Lock lock = null;
 boolean requiresViewUpdate = updateIndexes && 
viewManager.updatesAffectView(Collections.singleton(mutation), false);
+final CompletableFuture mark = future == null ? new 
CompletableFuture<>() : future;
 
 if (requiresViewUpdate)
 {
@@ -422,7 +427,10 @@ public class Keyspace
 {
 logger.trace("Could not acquire lock for {}", 
ByteBufferUtil.bytesToHex(mutation.key().getKey()));
 Tracing.trace("Could not acquire MV lock");
-throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);
+if (future != null)
+future.completeExceptionally(new 
WriteTimeoutException(WriteType.VIEW, ConsistencyLevel.LOCAL_ONE, 0, 1));
+else
+throw new WriteTimeoutException(WriteType.VIEW, 
ConsistencyLevel.LOCAL_ONE, 0, 1);

[3/3] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-02-01 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/b24076d1
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/b24076d1
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/b24076d1

Branch: refs/heads/trunk
Commit: b24076d117ba6ab95159bd9bb83b01fc620e2681
Parents: 6e7d739 30d3b29
Author: Carl Yeksigian 
Authored: Mon Feb 1 17:44:20 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 17:44:20 2016 -0500

--
 src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/b24076d1/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--



[1/3] cassandra git commit: Fix build

2016-02-01 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.3 2e965f0e4 -> 30d3b29ab
  refs/heads/trunk 6e7d739d1 -> b24076d11


Fix build


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/30d3b29a
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/30d3b29a
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/30d3b29a

Branch: refs/heads/cassandra-3.3
Commit: 30d3b29ab2b4aea486323a966d6169cfdc2e2113
Parents: 2e965f0
Author: Carl Yeksigian 
Authored: Mon Feb 1 17:44:05 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 17:44:05 2016 -0500

--
 src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/30d3b29a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java 
b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index 3a9f5e6..55bdf07 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -105,7 +105,7 @@ public class CommitLogReplayer
 {
 Runnable runnable = new WrappedRunnable()
 {
-public void runMayThrow() throws IOException
+public void runMayThrow() throws ExecutionException
 {
 if 
(Schema.instance.getKSMetaData(mutation.getKeyspaceName()) == null)
 return;



[2/3] cassandra git commit: Fix build

2016-02-01 Thread carl
Fix build


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/30d3b29a
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/30d3b29a
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/30d3b29a

Branch: refs/heads/trunk
Commit: 30d3b29ab2b4aea486323a966d6169cfdc2e2113
Parents: 2e965f0
Author: Carl Yeksigian 
Authored: Mon Feb 1 17:44:05 2016 -0500
Committer: Carl Yeksigian 
Committed: Mon Feb 1 17:44:05 2016 -0500

--
 src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/30d3b29a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java 
b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index 3a9f5e6..55bdf07 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -105,7 +105,7 @@ public class CommitLogReplayer
 {
 Runnable runnable = new WrappedRunnable()
 {
-public void runMayThrow() throws IOException
+public void runMayThrow() throws ExecutionException
 {
 if 
(Schema.instance.getKSMetaData(mutation.getKeyspaceName()) == null)
 return;



[6/6] cassandra git commit: Merge branch 'cassandra-3.3' into trunk

2016-02-03 Thread carl
Merge branch 'cassandra-3.3' into trunk


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/efd54c77
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/efd54c77
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/efd54c77

Branch: refs/heads/trunk
Commit: efd54c77e0fce3cbc5087942ef3074eb95ad1887
Parents: 44a5abc 233e785
Author: Carl Yeksigian 
Authored: Wed Feb 3 08:34:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 08:34:31 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java | 27 -
 1 file changed, 16 insertions(+), 11 deletions(-)
--




[3/6] cassandra git commit: Fix Mutation.applyUnsafe to block

2016-02-03 Thread carl
Fix Mutation.applyUnsafe to block

Patch by Carl Yeksigian; reviewed by Jake Luciani for CASSANDRA-10779


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c4d83f1b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c4d83f1b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c4d83f1b

Branch: refs/heads/trunk
Commit: c4d83f1ba31735963b451beb38a553c92145d5d4
Parents: 2081385
Author: Carl Yeksigian 
Authored: Wed Feb 3 08:33:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 08:33:31 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java | 27 -
 1 file changed, 16 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c4d83f1b/src/java/org/apache/cassandra/db/Mutation.java
--
diff --git a/src/java/org/apache/cassandra/db/Mutation.java 
b/src/java/org/apache/cassandra/db/Mutation.java
index 6b4c8e9..1ba3740 100644
--- a/src/java/org/apache/cassandra/db/Mutation.java
+++ b/src/java/org/apache/cassandra/db/Mutation.java
@@ -198,21 +198,22 @@ public class Mutation implements IMutation
 return new Mutation(ks, key, modifications);
 }
 
-public CompletableFuture applyFuture()
+private CompletableFuture applyFuture(boolean durableWrites)
 {
 Keyspace ks = Keyspace.open(keyspaceName);
-return ks.apply(this, ks.getMetadata().params.durableWrites);
+return ks.apply(this, durableWrites);
 }
 
-/*
- * This is equivalent to calling commit. Applies the changes to
- * to the keyspace that is obtained by calling Keyspace.open().
- */
-public void apply()
+public CompletableFuture applyFuture()
+{
+return 
applyFuture(Keyspace.open(keyspaceName).getMetadata().params.durableWrites);
+}
+
+public void apply(boolean durableWrites)
 {
 try
 {
-Uninterruptibles.getUninterruptibly(applyFuture());
+Uninterruptibles.getUninterruptibly(applyFuture(durableWrites));
 }
 catch (ExecutionException e)
 {
@@ -220,14 +221,18 @@ public class Mutation implements IMutation
 }
 }
 
-public void apply(boolean durableWrites)
+/*
+ * This is equivalent to calling commit. Applies the changes to
+ * to the keyspace that is obtained by calling Keyspace.open().
+ */
+public void apply()
 {
-Keyspace.open(keyspaceName).apply(this, durableWrites);
+apply(Keyspace.open(keyspaceName).getMetadata().params.durableWrites);
 }
 
 public void applyUnsafe()
 {
-Keyspace.open(keyspaceName).apply(this, false);
+apply(false);
 }
 
 public MessageOut createMessage()



[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-02-03 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/233e785b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/233e785b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/233e785b

Branch: refs/heads/trunk
Commit: 233e785bdf1a0b75d36e3fec4ed10256f12eca04
Parents: d7bea00 c4d83f1
Author: Carl Yeksigian 
Authored: Wed Feb 3 08:34:14 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 08:34:14 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java | 27 -
 1 file changed, 16 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/233e785b/src/java/org/apache/cassandra/db/Mutation.java
--



[2/6] cassandra git commit: Fix Mutation.applyUnsafe to block

2016-02-03 Thread carl
Fix Mutation.applyUnsafe to block

Patch by Carl Yeksigian; reviewed by Jake Luciani for CASSANDRA-10779


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c4d83f1b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c4d83f1b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c4d83f1b

Branch: refs/heads/cassandra-3.3
Commit: c4d83f1ba31735963b451beb38a553c92145d5d4
Parents: 2081385
Author: Carl Yeksigian 
Authored: Wed Feb 3 08:33:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 08:33:31 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java | 27 -
 1 file changed, 16 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c4d83f1b/src/java/org/apache/cassandra/db/Mutation.java
--
diff --git a/src/java/org/apache/cassandra/db/Mutation.java 
b/src/java/org/apache/cassandra/db/Mutation.java
index 6b4c8e9..1ba3740 100644
--- a/src/java/org/apache/cassandra/db/Mutation.java
+++ b/src/java/org/apache/cassandra/db/Mutation.java
@@ -198,21 +198,22 @@ public class Mutation implements IMutation
 return new Mutation(ks, key, modifications);
 }
 
-public CompletableFuture applyFuture()
+private CompletableFuture applyFuture(boolean durableWrites)
 {
 Keyspace ks = Keyspace.open(keyspaceName);
-return ks.apply(this, ks.getMetadata().params.durableWrites);
+return ks.apply(this, durableWrites);
 }
 
-/*
- * This is equivalent to calling commit. Applies the changes to
- * to the keyspace that is obtained by calling Keyspace.open().
- */
-public void apply()
+public CompletableFuture applyFuture()
+{
+return 
applyFuture(Keyspace.open(keyspaceName).getMetadata().params.durableWrites);
+}
+
+public void apply(boolean durableWrites)
 {
 try
 {
-Uninterruptibles.getUninterruptibly(applyFuture());
+Uninterruptibles.getUninterruptibly(applyFuture(durableWrites));
 }
 catch (ExecutionException e)
 {
@@ -220,14 +221,18 @@ public class Mutation implements IMutation
 }
 }
 
-public void apply(boolean durableWrites)
+/*
+ * This is equivalent to calling commit. Applies the changes to
+ * to the keyspace that is obtained by calling Keyspace.open().
+ */
+public void apply()
 {
-Keyspace.open(keyspaceName).apply(this, durableWrites);
+apply(Keyspace.open(keyspaceName).getMetadata().params.durableWrites);
 }
 
 public void applyUnsafe()
 {
-Keyspace.open(keyspaceName).apply(this, false);
+apply(false);
 }
 
 public MessageOut createMessage()



[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-02-03 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/233e785b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/233e785b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/233e785b

Branch: refs/heads/cassandra-3.3
Commit: 233e785bdf1a0b75d36e3fec4ed10256f12eca04
Parents: d7bea00 c4d83f1
Author: Carl Yeksigian 
Authored: Wed Feb 3 08:34:14 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 08:34:14 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java | 27 -
 1 file changed, 16 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/233e785b/src/java/org/apache/cassandra/db/Mutation.java
--



[1/6] cassandra git commit: Fix Mutation.applyUnsafe to block

2016-02-03 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 208138582 -> c4d83f1ba
  refs/heads/cassandra-3.3 d7bea0091 -> 233e785bd
  refs/heads/trunk 44a5abc35 -> efd54c77e


Fix Mutation.applyUnsafe to block

Patch by Carl Yeksigian; reviewed by Jake Luciani for CASSANDRA-10779


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c4d83f1b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c4d83f1b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c4d83f1b

Branch: refs/heads/cassandra-3.0
Commit: c4d83f1ba31735963b451beb38a553c92145d5d4
Parents: 2081385
Author: Carl Yeksigian 
Authored: Wed Feb 3 08:33:31 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 08:33:31 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java | 27 -
 1 file changed, 16 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c4d83f1b/src/java/org/apache/cassandra/db/Mutation.java
--
diff --git a/src/java/org/apache/cassandra/db/Mutation.java 
b/src/java/org/apache/cassandra/db/Mutation.java
index 6b4c8e9..1ba3740 100644
--- a/src/java/org/apache/cassandra/db/Mutation.java
+++ b/src/java/org/apache/cassandra/db/Mutation.java
@@ -198,21 +198,22 @@ public class Mutation implements IMutation
 return new Mutation(ks, key, modifications);
 }
 
-public CompletableFuture applyFuture()
+private CompletableFuture applyFuture(boolean durableWrites)
 {
 Keyspace ks = Keyspace.open(keyspaceName);
-return ks.apply(this, ks.getMetadata().params.durableWrites);
+return ks.apply(this, durableWrites);
 }
 
-/*
- * This is equivalent to calling commit. Applies the changes to
- * to the keyspace that is obtained by calling Keyspace.open().
- */
-public void apply()
+public CompletableFuture applyFuture()
+{
+return 
applyFuture(Keyspace.open(keyspaceName).getMetadata().params.durableWrites);
+}
+
+public void apply(boolean durableWrites)
 {
 try
 {
-Uninterruptibles.getUninterruptibly(applyFuture());
+Uninterruptibles.getUninterruptibly(applyFuture(durableWrites));
 }
 catch (ExecutionException e)
 {
@@ -220,14 +221,18 @@ public class Mutation implements IMutation
 }
 }
 
-public void apply(boolean durableWrites)
+/*
+ * This is equivalent to calling commit. Applies the changes to
+ * to the keyspace that is obtained by calling Keyspace.open().
+ */
+public void apply()
 {
-Keyspace.open(keyspaceName).apply(this, durableWrites);
+apply(Keyspace.open(keyspaceName).getMetadata().params.durableWrites);
 }
 
 public void applyUnsafe()
 {
-Keyspace.open(keyspaceName).apply(this, false);
+apply(false);
 }
 
 public MessageOut createMessage()



[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.3

2016-02-03 Thread carl
Merge branch 'cassandra-3.0' into cassandra-3.3


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/de24ee94
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/de24ee94
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/de24ee94

Branch: refs/heads/cassandra-3.3
Commit: de24ee94f355042f24f04c3dec8c1c5e4ec3
Parents: 78fe8c4 5f1e4bc
Author: Carl Yeksigian 
Authored: Wed Feb 3 09:29:20 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 09:29:20 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java|  3 ++-
 .../cassandra/db/commitlog/CommitLogReplayer.java | 14 --
 .../apache/cassandra/service/paxos/PaxosState.java|  3 ++-
 3 files changed, 16 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/de24ee94/src/java/org/apache/cassandra/db/Mutation.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de24ee94/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--
diff --cc src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index 55bdf07,33750f8..985a036
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@@ -30,8 -30,8 +30,9 @@@ import java.util.concurrent.Future
  import java.util.concurrent.atomic.AtomicInteger;
  import java.util.zip.CRC32;
  
 +import com.google.common.annotations.VisibleForTesting;
  import com.google.common.base.Predicate;
+ import com.google.common.base.Throwables;
  import com.google.common.collect.HashMultimap;
  import com.google.common.collect.Iterables;
  import com.google.common.collect.Multimap;
@@@ -90,65 -85,6 +91,74 @@@ public class CommitLogReplaye
  private final ReplayFilter replayFilter;
  private final CommitLogArchiver archiver;
  
 +/*
 + * Wrapper around initiating mutations read from the log to make it 
possible
 + * to spy on initiated mutations for test
 + */
 +@VisibleForTesting
 +public static class MutationInitiator
 +{
 +protected Future initiateMutation(final Mutation mutation,
 +   final long segmentId,
 +   final int serializedSize,
 +   final long entryLocation,
 +   final CommitLogReplayer 
clr)
 +{
 +Runnable runnable = new WrappedRunnable()
 +{
- public void runMayThrow() throws ExecutionException
++public void runMayThrow()
 +{
 +if 
(Schema.instance.getKSMetaData(mutation.getKeyspaceName()) == null)
 +return;
 +if (clr.pointInTimeExceeded(mutation))
 +return;
 +
 +final Keyspace keyspace = 
Keyspace.open(mutation.getKeyspaceName());
 +
 +// Rebuild the mutation, omitting column families that
 +//a) the user has requested that we ignore,
 +//b) have already been flushed,
 +// or c) are part of a cf that was dropped.
 +// Keep in mind that the cf.name() is suspect. do every 
thing based on the cfid instead.
 +Mutation newMutation = null;
 +for (PartitionUpdate update : 
clr.replayFilter.filter(mutation))
 +{
 +if (Schema.instance.getCF(update.metadata().cfId) == 
null)
 +continue; // dropped
 +
 +ReplayPosition rp = 
clr.cfPositions.get(update.metadata().cfId);
 +
 +// replay if current segment is newer than last 
flushed one or,
 +// if it is the last known segment, if we are after 
the replay position
 +if (segmentId > rp.segment || (segmentId == 
rp.segment && entryLocation > rp.position))
 +{
 +if (newMutation == null)
 +newMutation = new 
Mutation(mutation.getKeyspaceName(), mutation.key());
 +newMutation.add(update);
 +clr.replayedCount.incrementAndGet();
 +}
 +}
 +if (newMutation != null)
 +{
 +assert !newMutation.isEmpty();
- 
Uninterruptibles.getUnint

[1/6] cassandra git commit: Use Throwables.propagate on ExecutionException

2016-02-03 Thread carl
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 21380fc12 -> 5f1e4bcad
  refs/heads/cassandra-3.3 78fe8c487 -> de24ee94f
  refs/heads/trunk 617bf46ef -> 940ae5168


Use Throwables.propagate on ExecutionException


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5f1e4bca
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5f1e4bca
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5f1e4bca

Branch: refs/heads/cassandra-3.0
Commit: 5f1e4bcad7d36feb97096c6149ad3c43f26f0fd9
Parents: 21380fc
Author: Carl Yeksigian 
Authored: Wed Feb 3 09:26:01 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 09:26:01 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java|  3 ++-
 .../cassandra/db/commitlog/CommitLogReplayer.java | 14 --
 .../apache/cassandra/service/paxos/PaxosState.java|  3 ++-
 3 files changed, 16 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f1e4bca/src/java/org/apache/cassandra/db/Mutation.java
--
diff --git a/src/java/org/apache/cassandra/db/Mutation.java 
b/src/java/org/apache/cassandra/db/Mutation.java
index 1ba3740..9a26456 100644
--- a/src/java/org/apache/cassandra/db/Mutation.java
+++ b/src/java/org/apache/cassandra/db/Mutation.java
@@ -24,6 +24,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicLong;
 
+import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.Uninterruptibles;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.cassandra.config.CFMetaData;
@@ -217,7 +218,7 @@ public class Mutation implements IMutation
 }
 catch (ExecutionException e)
 {
-throw new RuntimeException(e.getCause());
+Throwables.propagate(e.getCause());
 }
 }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f1e4bca/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java 
b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index b4472ed..33750f8 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.zip.CRC32;
 
 import com.google.common.base.Predicate;
+import com.google.common.base.Throwables;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
@@ -568,7 +569,7 @@ public class CommitLogReplayer
 
 Runnable runnable = new WrappedRunnable()
 {
-public void runMayThrow() throws ExecutionException
+public void runMayThrow()
 {
 if (Schema.instance.getKSMetaData(mutation.getKeyspaceName()) 
== null)
 return;
@@ -603,7 +604,16 @@ public class CommitLogReplayer
 if (newMutation != null)
 {
 assert !newMutation.isEmpty();
-
Uninterruptibles.getUninterruptibly(Keyspace.open(newMutation.getKeyspaceName()).applyFromCommitLog(newMutation));
+
+try
+{
+
Uninterruptibles.getUninterruptibly(Keyspace.open(newMutation.getKeyspaceName()).applyFromCommitLog(newMutation));
+}
+catch (ExecutionException e)
+{
+Throwables.propagate(e.getCause());
+}
+
 keyspacesRecovered.add(keyspace);
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f1e4bca/src/java/org/apache/cassandra/service/paxos/PaxosState.java
--
diff --git a/src/java/org/apache/cassandra/service/paxos/PaxosState.java 
b/src/java/org/apache/cassandra/service/paxos/PaxosState.java
index 3ecac99..d4fed51 100644
--- a/src/java/org/apache/cassandra/service/paxos/PaxosState.java
+++ b/src/java/org/apache/cassandra/service/paxos/PaxosState.java
@@ -23,6 +23,7 @@ package org.apache.cassandra.service.paxos;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.locks.Lock;
 
+import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.Striped;
 import com.google.common.util.concurrent.Uninterruptibles;
 
@@ -145,7 +146,7 @@ public class P

[3/6] cassandra git commit: Use Throwables.propagate on ExecutionException

2016-02-03 Thread carl
Use Throwables.propagate on ExecutionException


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5f1e4bca
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5f1e4bca
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5f1e4bca

Branch: refs/heads/trunk
Commit: 5f1e4bcad7d36feb97096c6149ad3c43f26f0fd9
Parents: 21380fc
Author: Carl Yeksigian 
Authored: Wed Feb 3 09:26:01 2016 -0500
Committer: Carl Yeksigian 
Committed: Wed Feb 3 09:26:01 2016 -0500

--
 src/java/org/apache/cassandra/db/Mutation.java|  3 ++-
 .../cassandra/db/commitlog/CommitLogReplayer.java | 14 --
 .../apache/cassandra/service/paxos/PaxosState.java|  3 ++-
 3 files changed, 16 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f1e4bca/src/java/org/apache/cassandra/db/Mutation.java
--
diff --git a/src/java/org/apache/cassandra/db/Mutation.java 
b/src/java/org/apache/cassandra/db/Mutation.java
index 1ba3740..9a26456 100644
--- a/src/java/org/apache/cassandra/db/Mutation.java
+++ b/src/java/org/apache/cassandra/db/Mutation.java
@@ -24,6 +24,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicLong;
 
+import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.Uninterruptibles;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.cassandra.config.CFMetaData;
@@ -217,7 +218,7 @@ public class Mutation implements IMutation
 }
 catch (ExecutionException e)
 {
-throw new RuntimeException(e.getCause());
+Throwables.propagate(e.getCause());
 }
 }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f1e4bca/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
--
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java 
b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index b4472ed..33750f8 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -31,6 +31,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.zip.CRC32;
 
 import com.google.common.base.Predicate;
+import com.google.common.base.Throwables;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Multimap;
@@ -568,7 +569,7 @@ public class CommitLogReplayer
 
 Runnable runnable = new WrappedRunnable()
 {
-public void runMayThrow() throws ExecutionException
+public void runMayThrow()
 {
 if (Schema.instance.getKSMetaData(mutation.getKeyspaceName()) 
== null)
 return;
@@ -603,7 +604,16 @@ public class CommitLogReplayer
 if (newMutation != null)
 {
 assert !newMutation.isEmpty();
-
Uninterruptibles.getUninterruptibly(Keyspace.open(newMutation.getKeyspaceName()).applyFromCommitLog(newMutation));
+
+try
+{
+
Uninterruptibles.getUninterruptibly(Keyspace.open(newMutation.getKeyspaceName()).applyFromCommitLog(newMutation));
+}
+catch (ExecutionException e)
+{
+Throwables.propagate(e.getCause());
+}
+
 keyspacesRecovered.add(keyspace);
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5f1e4bca/src/java/org/apache/cassandra/service/paxos/PaxosState.java
--
diff --git a/src/java/org/apache/cassandra/service/paxos/PaxosState.java 
b/src/java/org/apache/cassandra/service/paxos/PaxosState.java
index 3ecac99..d4fed51 100644
--- a/src/java/org/apache/cassandra/service/paxos/PaxosState.java
+++ b/src/java/org/apache/cassandra/service/paxos/PaxosState.java
@@ -23,6 +23,7 @@ package org.apache.cassandra.service.paxos;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.locks.Lock;
 
+import com.google.common.base.Throwables;
 import com.google.common.util.concurrent.Striped;
 import com.google.common.util.concurrent.Uninterruptibles;
 
@@ -145,7 +146,7 @@ public class PaxosState
 }
 catch (ExecutionException e)
 {
-throw new RuntimeException(e.getCause());
+Throwables.propagate(e.getCause

  1   2   3   4   5   6   7   8   9   10   >