cassandra git commit: Enhanced Compaction Logging
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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