[cassandra] branch trunk updated (c26269b -> 9a3ca00)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git. from c26269b ninja fixing wrongly committed circle-ci new 2d0b168 Fix serial read/non-applying CAS linearizability new 080280d Merge commit '2d0b16804785660e8515aca9944784fb3733c619' into cassandra-3.11 new 9a3ca00 Merge commit '080280dc0177da6176dd4ba970e5a35aa7e2a729' into trunk The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.txt| 1 + NEWS.txt | 8 + .../org/apache/cassandra/service/StorageProxy.java | 352 +++ .../org/apache/cassandra/service/paxos/Commit.java | 6 + .../cassandra/service/paxos/PrepareCallback.java | 12 +- .../cassandra/distributed/impl/Instance.java | 83 +++ .../apache/cassandra/distributed/test/CASTest.java | 688 + 7 files changed, 1034 insertions(+), 116 deletions(-) create mode 100644 test/distributed/org/apache/cassandra/distributed/test/CASTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/01: Merge commit '2d0b16804785660e8515aca9944784fb3733c619' into cassandra-3.11
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 080280dc0177da6176dd4ba970e5a35aa7e2a729 Merge: 7ffb2fe 2d0b168 Author: Sylvain Lebresne AuthorDate: Fri Nov 27 17:05:48 2020 +0100 Merge commit '2d0b16804785660e8515aca9944784fb3733c619' into cassandra-3.11 CHANGES.txt| 1 + NEWS.txt | 8 + .../org/apache/cassandra/service/StorageProxy.java | 239 +-- .../org/apache/cassandra/service/paxos/Commit.java | 6 + .../apache/cassandra/service/paxos/PaxosState.java | 3 - .../cassandra/service/paxos/PrepareCallback.java | 12 +- .../cassandra/distributed/impl/Instance.java | 113 ++-- .../apache/cassandra/distributed/test/CASTest.java | 684 + 8 files changed, 949 insertions(+), 117 deletions(-) diff --cc CHANGES.txt index dd554c2,d6f406d..c3c5f02 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,7 -1,5 +1,8 @@@ -3.0.24: +3.11.10 + * Rate limit validation compactions using compaction_throughput_mb_per_sec (CASSANDRA-16161) + * SASI's `max_compaction_flush_memory_in_mb` settings over 100GB revert to default of 1GB (CASSANDRA-16071) +Merged from 3.0: + * Fix serial read/non-applying CAS linearizability (CASSANDRA-12126) * Avoid potential NPE in JVMStabilityInspector (CASSANDRA-16294) * Improved check of num_tokens against the length of initial_token (CASSANDRA-14477) * Fix a race condition on ColumnFamilyStore and TableMetrics (CASSANDRA-16228) diff --cc NEWS.txt index 3af2150,6cc5e84..c5a3439 --- a/NEWS.txt +++ b/NEWS.txt @@@ -42,10 -42,19 +42,18 @@@ restore snapshots created with the prev 'sstableloader' tool. You can upgrade the file format of your snapshots using the provided 'sstableupgrade' tool. -3.0.24 -== - +3.11.10 += Upgrading - + - This release fix a correctness issue with SERIAL reads, and LWT writes that do not apply. + Unfortunately, this fix has a performance impact on read performance at the SERIAL or + LOCAL_SERIAL consistency levels. For heavy users of such SERIAL reads, the performance + impact may be noticeable and may also result in an increased of timeouts. For that + reason, a opt-in system property has been added to disable the fix: + -Dcassandra.unsafe.disable-serial-reads-linearizability=true + Use this flag at your own risk as it revert SERIAL reads to the incorrect behavior of + previous versions. See CASSANDRA-12126 for details. - In cassandra.yaml, when using vnodes num_tokens must be defined if initial_token is defined. If it is not defined, or not equal to the numbers of tokens defined in initial_tokens, the node will not start. See CASSANDRA-14477 for details. diff --cc src/java/org/apache/cassandra/service/StorageProxy.java index b1e0696,91dd991..d6f713e --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@@ -169,11 -169,15 +174,21 @@@ public class StorageProxy implements St } }; +for(ConsistencyLevel level : ConsistencyLevel.values()) +{ +readMetricsMap.put(level, new ClientRequestMetrics("Read-" + level.name())); +writeMetricsMap.put(level, new ClientRequestMetrics("Write-" + level.name())); +} ++ + if (disableSerialReadLinearizability) + { + logger.warn("This node was started with -D{}. SERIAL (and LOCAL_SERIAL) reads coordinated by this node " + + "will not offer linearizability (see CASSANDRA-12126 for details on what this mean) with " + + "respect to other SERIAL operations. Please note that, with this flag, SERIAL reads will be " + + "slower than QUORUM reads, yet offer no more guarantee. This flag should only be used in " + + "the restricted case of upgrading from a pre-CASSANDRA-12126 version, and only if you " + + "understand the tradeoff.", DISABLE_SERIAL_READ_LINEARIZABILITY_KEY); + } } /** @@@ -223,31 -227,16 +238,17 @@@ CASRequest request, ConsistencyLevel consistencyForPaxos, ConsistencyLevel consistencyForCommit, - ClientState state) + ClientState state, + long queryStartNanoTime) throws UnavailableException, IsBootstrappingException, RequestFailureException, RequestTimeoutException, InvalidRequestException { -final long start = System.nanoTim
[cassandra] 01/01: Merge commit '080280dc0177da6176dd4ba970e5a35aa7e2a729' into trunk
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 9a3ca008bad2a7bfa887a8ba2d119fdc4369ba08 Merge: c26269b 080280d Author: Sylvain Lebresne AuthorDate: Fri Nov 27 17:07:15 2020 +0100 Merge commit '080280dc0177da6176dd4ba970e5a35aa7e2a729' into trunk CHANGES.txt| 1 + NEWS.txt | 8 + .../org/apache/cassandra/service/StorageProxy.java | 352 +++ .../org/apache/cassandra/service/paxos/Commit.java | 6 + .../cassandra/service/paxos/PrepareCallback.java | 12 +- .../cassandra/distributed/impl/Instance.java | 83 +++ .../apache/cassandra/distributed/test/CASTest.java | 688 + 7 files changed, 1034 insertions(+), 116 deletions(-) diff --cc CHANGES.txt index 92094dc,c3c5f02..56843d7 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,20 -1,8 +1,21 @@@ -3.11.10 - * Rate limit validation compactions using compaction_throughput_mb_per_sec (CASSANDRA-16161) +4.0-beta4 + * Update jctools dependency to 3.1.0 (CASSANDRA-16255) + * 'SSLEngine closed already' exception on failed outbound connection (CASSANDRA-16277) + * Drain and/or shutdown might throw because of slow messaging service shutdown (CASSANDRA-16276) + * Upgrade JNA to 5.6.0, dropping support for <=glibc-2.6 systems (CASSANDRA-16212) + * Add saved Host IDs to TokenMetadata at startup (CASSANDRA-16246) + * Ensure that CacheMetrics.requests is picked up by the metric reporter (CASSANDRA-16228) + * Add a ratelimiter to snapshot creation and deletion (CASSANDRA-13019) + * Produce consistent tombstone for reads to avoid digest mistmatch (CASSANDRA-15369) + * Fix SSTableloader issue when restoring a table named backups (CASSANDRA-16235) + * Invalid serialized size for responses caused by increasing message time by 1ms which caused extra bytes in size calculation (CASSANDRA-16103) + * Throw BufferOverflowException from DataOutputBuffer for better visibility (CASSANDRA-16214) + * TLS connections to the storage port on a node without server encryption configured causes java.io.IOException accessing missing keystore (CASSANDRA-16144) + * Internode messaging catches OOMs and does not rethrow (CASSANDRA-15214) +Merged from 3.11: * SASI's `max_compaction_flush_memory_in_mb` settings over 100GB revert to default of 1GB (CASSANDRA-16071) Merged from 3.0: + * Fix serial read/non-applying CAS linearizability (CASSANDRA-12126) * Avoid potential NPE in JVMStabilityInspector (CASSANDRA-16294) * Improved check of num_tokens against the length of initial_token (CASSANDRA-14477) * Fix a race condition on ColumnFamilyStore and TableMetrics (CASSANDRA-16228) diff --cc NEWS.txt index 9774d00,c5a3439..d02f2f0 --- a/NEWS.txt +++ b/NEWS.txt @@@ -33,256 -42,21 +33,264 @@@ restore snapshots created with the prev 'sstableloader' tool. You can upgrade the file format of your snapshots using the provided 'sstableupgrade' tool. +4.0 +=== + +New features + +- Nodes will now bootstrap all intra-cluster connections at startup by default and wait + 10 seconds for the all but one node in the local data center to be connected and marked + UP in gossip. This prevents nodes from coordinating requests and failing because they + aren't able to connect to the cluster fast enough. block_for_peers_timeout_in_secs in + cassandra.yaml can be used to configure how long to wait (or whether to wait at all) + and block_for_peers_in_remote_dcs can be used to also block on all but one node in + each remote DC as well. See CASSANDRA-14297 and CASSANDRA-13993 for more information. +- *Experimental* support for Transient Replication and Cheap Quorums introduced by CASSANDRA-14404 + The intended audience for this functionality is expert users of Cassandra who are prepared + to validate every aspect of the database for their application and deployment practices. Future + releases of Cassandra will make this feature suitable for a wider audience. +- *Experimental* support for Java 11 has been added. JVM options that differ between or are + specific for Java 8 and 11 have been moved from jvm.options into jvm8.options and jvm11.options. + IMPORTANT: Running C* on Java 11 is *experimental* and do it at your own risk. +- LCS now respects the max_threshold parameter when compacting - this was hard coded to 32 + before, but now it is possible to do bigger compactions when compacting from L0 to L1. + This also applies to STCS-compactions in L0 - if there are more than 32 sstables in L0 + we will compact at most max_threshold sstables in an L0 STCS compaction. See CASSANDRA-14388 + for more information. +- There is now an option to automatically upgrade sstables af
[cassandra] branch cassandra-3.11 updated (7ffb2fe -> 080280d)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git. from 7ffb2fe Merge branch 'cassandra-3.0' into cassandra-3.11 new 2d0b168 Fix serial read/non-applying CAS linearizability new 080280d Merge commit '2d0b16804785660e8515aca9944784fb3733c619' into cassandra-3.11 The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.txt| 1 + NEWS.txt | 8 + .../org/apache/cassandra/service/StorageProxy.java | 239 +-- .../org/apache/cassandra/service/paxos/Commit.java | 6 + .../apache/cassandra/service/paxos/PaxosState.java | 3 - .../cassandra/service/paxos/PrepareCallback.java | 12 +- .../cassandra/distributed/impl/Instance.java | 113 ++-- .../apache/cassandra/distributed/test/CASTest.java | 684 + 8 files changed, 949 insertions(+), 117 deletions(-) create mode 100644 test/distributed/org/apache/cassandra/distributed/test/CASTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-3.0 updated: Fix serial read/non-applying CAS linearizability
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-3.0 by this push: new 2d0b168 Fix serial read/non-applying CAS linearizability 2d0b168 is described below commit 2d0b16804785660e8515aca9944784fb3733c619 Author: Sylvain Lebresne AuthorDate: Wed May 20 14:56:02 2020 +0200 Fix serial read/non-applying CAS linearizability Before this patch, a SERIAL read or a non-applying CAS replay any in-progress commit by calling `beginAndRepairPaxos`, but only a quorum of nodes is contacted, so a minority of nodes could have an unfinished in-progress proposal in their Paxos state. If such in-progress proposal is not replayed by a SERIAL read/non-applying CAS, it should never be replayed by any following operation as that would break serializability, but nothing was done to avoid this. This patch ensures that both a SERIAL read or a non-applying CAS commit an empty update before succeeding. This ensures that no prior incomplete in-progress proposal can be replayed (such proposal will be discarded as older than the last committed ballot). As this fix has a performance impact on SERIAL reads, a flag is provided to disable the new code (even if this is discouraged by a warning). Patch by Sylvain Lebresne, reviewed by Benjamin Lerer for CASSANDRA-12126 --- CHANGES.txt| 1 + NEWS.txt | 8 + .../org/apache/cassandra/service/StorageProxy.java | 231 +-- .../org/apache/cassandra/service/paxos/Commit.java | 6 + .../apache/cassandra/service/paxos/PaxosState.java | 3 - .../cassandra/service/paxos/PrepareCallback.java | 12 +- .../cassandra/distributed/impl/Instance.java | 112 ++-- .../apache/cassandra/distributed/test/CASTest.java | 679 + 8 files changed, 939 insertions(+), 113 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 546fd98..d6f406d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.24: + * Fix serial read/non-applying CAS linearizability (CASSANDRA-12126) * Avoid potential NPE in JVMStabilityInspector (CASSANDRA-16294) * Improved check of num_tokens against the length of initial_token (CASSANDRA-14477) * Fix a race condition on ColumnFamilyStore and TableMetrics (CASSANDRA-16228) diff --git a/NEWS.txt b/NEWS.txt index 7034c2c..6cc5e84 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -47,6 +47,14 @@ using the provided 'sstableupgrade' tool. Upgrading - +- This release fix a correctness issue with SERIAL reads, and LWT writes that do not apply. + Unfortunately, this fix has a performance impact on read performance at the SERIAL or + LOCAL_SERIAL consistency levels. For heavy users of such SERIAL reads, the performance + impact may be noticeable and may also result in an increased of timeouts. For that + reason, a opt-in system property has been added to disable the fix: +-Dcassandra.unsafe.disable-serial-reads-linearizability=true + Use this flag at your own risk as it revert SERIAL reads to the incorrect behavior of + previous versions. See CASSANDRA-12126 for details. - In cassandra.yaml, when using vnodes num_tokens must be defined if initial_token is defined. If it is not defined, or not equal to the numbers of tokens defined in initial_tokens, the node will not start. See CASSANDRA-14477 for details. diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index c7888c4..91dd991 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -24,6 +24,7 @@ import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; +import java.util.function.Supplier; import com.google.common.base.Predicate; import com.google.common.annotations.VisibleForTesting; @@ -109,6 +110,10 @@ public class StorageProxy implements StorageProxyMBean */ private static final int MAX_CONCURRENT_RANGE_REQUESTS = Math.max(1, Integer.getInteger("cassandra.max_concurrent_range_requests", FBUtilities.getAvailableProcessors() * 10)); +private static final String DISABLE_SERIAL_READ_LINEARIZABILITY_KEY = "cassandra.unsafe.disable-serial-reads-linearizability"; +private static final boolean disableSerialReadLinearizability = + Boolean.parseBoolean(System.getProperty(DISABLE_SERIAL_READ_LINEARIZABILITY_KEY, "false")); + private StorageProxy() { } @@ -163,6 +168,16 @@ public class StorageProxy implements StorageProxyMBean
[cassandra] 01/01: Merge branch 'cassandra-3.0' into cassandra-3.11
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 833ba83c155871247092d6783d026c27582cde7b Merge: a32881e f106ef0 Author: Sylvain Lebresne AuthorDate: Mon Nov 2 11:37:43 2020 +0100 Merge branch 'cassandra-3.0' into cassandra-3.11 CHANGES.txt | 2 ++ .../apache/cassandra/cql3/statements/SelectStatement.java | 13 ++--- .../cassandra/cql3/validation/ThriftIntegrationTest.java| 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --cc CHANGES.txt index b4caada,80f5d58..2501fcb --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,11 -1,5 +1,13 @@@ +3.11.9 + * Synchronize Keyspace instance store/clear (CASSANDRA-16210) + * Fix ColumnFilter to avoid querying cells of unselected complex columns (CASSANDRA-15977) + * Fix memory leak in CompressedChunkReader (CASSANDRA-15880) + * Don't attempt value skipping with mixed version cluster (CASSANDRA-15833) + * Avoid failing compactions with very large partitions (CASSANDRA-15164) + * Make sure LCS handles duplicate sstable added/removed notifications correctly (CASSANDRA-14103) +Merged from 3.0: + 3.0.23: + * Fix invalid cell value skipping when reading from disk (CASSANDRA-16223) * Prevent invoking enable/disable gossip when not in NORMAL (CASSANDRA-16146) * Fix OOM when terminating repair session (CASSANDRA-15902) * Avoid marking shutting down nodes as up after receiving gossip shutdown message (CASSANDRA-16094) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-3.11 updated (a32881e -> 833ba83)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git. from a32881e Merge branch 'cassandra-3.0' into cassandra-3.11 new f106ef0 Fix invalid cell value skipping when reading from disk new 833ba83 Merge branch 'cassandra-3.0' into cassandra-3.11 The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.txt | 2 ++ .../apache/cassandra/cql3/statements/SelectStatement.java | 13 ++--- .../cassandra/cql3/validation/ThriftIntegrationTest.java| 4 ++-- 3 files changed, 14 insertions(+), 5 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch trunk updated (17cf2e7 -> cc28eba)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git. from 17cf2e7 Merge branch 'cassandra-3.11' into trunk new f106ef0 Fix invalid cell value skipping when reading from disk new cc28eba Merge commit 'f106ef0697e172492b0343462c593edb703f2ac8' into trunk The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/01: Merge commit 'f106ef0697e172492b0343462c593edb703f2ac8' into trunk
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit cc28eba205341396bf009095ce04f6e3c953e1bd Merge: 17cf2e7 f106ef0 Author: Sylvain Lebresne AuthorDate: Mon Nov 2 11:39:14 2020 +0100 Merge commit 'f106ef0697e172492b0343462c593edb703f2ac8' into trunk - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-3.0 updated: Fix invalid cell value skipping when reading from disk
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-3.0 by this push: new f106ef0 Fix invalid cell value skipping when reading from disk f106ef0 is described below commit f106ef0697e172492b0343462c593edb703f2ac8 Author: jacek-lewandowski AuthorDate: Thu Oct 22 22:36:24 2020 +0200 Fix invalid cell value skipping when reading from disk patch by Jacek Lewandowski; reviewed by Sylvain Lebresne for CASSANDRA-16223 --- CHANGES.txt | 1 + .../apache/cassandra/cql3/statements/SelectStatement.java | 13 ++--- .../cassandra/cql3/validation/ThriftIntegrationTest.java| 4 ++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index bfc0a81..80f5d58 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.23: + * Fix invalid cell value skipping when reading from disk (CASSANDRA-16223) * Prevent invoking enable/disable gossip when not in NORMAL (CASSANDRA-16146) * Fix OOM when terminating repair session (CASSANDRA-15902) * Avoid marking shutting down nodes as up after receiving gossip shutdown message (CASSANDRA-16094) diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java index 30c4458..046cc93 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -514,12 +514,12 @@ public class SelectStatement implements CQLStatement // Note that we use the total limit for every key, which is potentially inefficient. // However, IN + LIMIT is not a very sensible choice. List commands = new ArrayList<>(keys.size()); +ColumnFilter columnFilter = createColumnFilter(options); for (ByteBuffer key : keys) { QueryProcessor.validateKey(key); DecoratedKey dk = cfm.decorateKey(ByteBufferUtil.clone(key)); -ColumnFilter cf = (cfm.isSuper() && cfm.isDense()) ? SuperColumnCompatibility.getColumnFilter(cfm, options, restrictions.getSuperColumnRestrictions()) : queriedColumns; -commands.add(SinglePartitionReadCommand.create(cfm, nowInSec, cf, rowFilter, limit, dk, filter)); +commands.add(SinglePartitionReadCommand.create(cfm, nowInSec, columnFilter, rowFilter, limit, dk, filter)); } return new SinglePartitionReadCommand.Group(commands, limit); @@ -581,7 +581,7 @@ public class SelectStatement implements CQLStatement return ReadQuery.EMPTY; PartitionRangeReadCommand command = -PartitionRangeReadCommand.create(false, cfm, nowInSec, queriedColumns, rowFilter, limit, new DataRange(keyBounds, clusteringIndexFilter)); +PartitionRangeReadCommand.create(false, cfm, nowInSec, createColumnFilter(options), rowFilter, limit, new DataRange(keyBounds, clusteringIndexFilter)); // If there's a secondary index that the command can use, have it validate the request parameters. command.maybeValidateIndex(); @@ -870,6 +870,13 @@ public class SelectStatement implements CQLStatement Collections.sort(cqlRows.rows, orderingComparator); } +private ColumnFilter createColumnFilter(QueryOptions options) +{ +return (cfm.isSuper() && cfm.isDense()) + ? SuperColumnCompatibility.getColumnFilter(cfm, options, restrictions.getSuperColumnRestrictions()) + : queriedColumns; +} + public static class RawStatement extends CFStatement { public final Parameters parameters; diff --git a/test/unit/org/apache/cassandra/cql3/validation/ThriftIntegrationTest.java b/test/unit/org/apache/cassandra/cql3/validation/ThriftIntegrationTest.java index def489e..7741b80 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/ThriftIntegrationTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/ThriftIntegrationTest.java @@ -936,7 +936,7 @@ public class ThriftIntegrationTest extends ThriftCQLTester private void flushAll() { -for (String cfName : new String[]{ currentTable(), currentSparseTable(), currentCounterTable() }) -Keyspace.open(KEYSPACE).getColumnFamilyStore(cfName); +for (String cfName : new String[]{ currentTable(), currentSparseTable(), currentCounterTable(), currentDenseTable() }) + Keyspace.open(KEYSPACE).getColumnFamilyStore(cfName).forceBlockingFlush(); } } - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/01: Merge branch 'cassandra-3.11' into trunk
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit efce6b39fb557314fad0cb56b07a1919d26b84fc Merge: 139ad44 ecd23f1 Author: Sylvain Lebresne AuthorDate: Mon Aug 17 11:39:24 2020 +0200 Merge branch 'cassandra-3.11' into trunk CHANGES.txt| 1 + .../cassandra/db/SinglePartitionReadCommand.java | 25 -- .../db/compaction/AbstractCompactionStrategy.java | 5 - .../db/compaction/CompactionStrategyManager.java | 7 -- .../compaction/SizeTieredCompactionStrategy.java | 6 -- 5 files changed, 1 insertion(+), 43 deletions(-) diff --cc CHANGES.txt index 58239c9,a6bc9d9..7298e0c --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,20 -1,14 +1,21 @@@ -3.11.8 +4.0-beta2 + * Make TimestampSerializer accept fractional seconds of varying precision (CASSANDRA-15976) + * Improve cassandra-stress logging when using a profile file that doesn't exist (CASSANDRA-14425) + * Improve logging for socket connection/disconnection (CASSANDRA-15980) + * Throw FSWriteError upon write failures in order to apply DiskFailurePolicy (CASSANDRA-15928) + * Forbid altering UDTs used in partition keys (CASSANDRA-15933) + * Fix version parsing logic when upgrading from 3.0 (CASSANDRA-15973) + * Optimize NoSpamLogger use in hot paths (CASSANDRA-15766) + * Verify sstable components on startup (CASSANDRA-15945) +Merged from 3.11: * Fix short read protection for GROUP BY queries (CASSANDRA-15459) + * stop_paranoid disk failure policy is ignored on CorruptSSTableException after node is up (CASSANDRA-15191) * Frozen RawTuple is not annotated with frozen in the toString method (CASSANDRA-15857) Merged from 3.0: + * Remove broken 'defrag-on-read' optimization (CASSANDRA-15432) * Check for endpoint collision with hibernating nodes (CASSANDRA-14599) * Operational improvements and hardening for replica filtering protection (CASSANDRA-15907) - * stop_paranoid disk failure policy is ignored on CorruptSSTableException after node is up (CASSANDRA-15191) - * Forbid altering UDTs used in partition keys (CASSANDRA-15933) * Fix empty/null json string representation (CASSANDRA-15896) - * 3.x fails to start if commit log has range tombstones from a column which is also deleted (CASSANDRA-15970) Merged from 2.2: * Fix CQL parsing of collections when the column type is reversed (CASSANDRA-15814) diff --cc src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java index 6fbe523,c5de444..e581be5 --- a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java +++ b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java @@@ -28,10 -28,15 +28,9 @@@ import com.google.common.collect.Sets import org.apache.cassandra.cache.IRowCacheEntry; import org.apache.cassandra.cache.RowCacheKey; import org.apache.cassandra.cache.RowCacheSentinel; --import org.apache.cassandra.concurrent.Stage; -import org.apache.cassandra.concurrent.StageManager; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.db.lifecycle.*; import org.apache.cassandra.db.filter.*; +import org.apache.cassandra.db.lifecycle.*; import org.apache.cassandra.db.partitions.*; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.db.transform.RTBoundValidator; @@@ -889,11 -992,8 +887,8 @@@ public class SinglePartitionReadComman if (iter.isEmpty()) continue; - if (sstable.isRepaired()) - onlyUnrepaired = false; - result = add( -RTBoundValidator.validate(isForThrift() ? ThriftResultsMerger.maybeWrap(iter, nowInSec()) : iter, RTBoundValidator.Stage.SSTABLE, false), +RTBoundValidator.validate(iter, RTBoundValidator.Stage.SSTABLE, false), result, filter, sstable.isRepaired() @@@ -907,29 -1007,9 +902,9 @@@ return EmptyIterators.unfilteredRow(metadata(), partitionKey(), false); DecoratedKey key = result.partitionKey(); - cfs.metric.samplers.get(TableMetrics.Sampler.READS).addSample(key.getKey(), key.hashCode(), 1); -StorageHook.instance.reportRead(cfs.metadata.cfId, partitionKey()); +cfs.metric.topReadPartitionFrequency.addSample(key.getKey(), 1); +StorageHook.instance.reportRead(cfs.metadata.id, partitionKey()); - // "hoist up" the requested data into a more recent sstable - if (metricsCollector.getMergedSSTables() > cfs.getMinimumCompactionThreshold() - && onlyUnrepaired - && !cfs.isAutoCompactionDisabled() - &&
[cassandra] branch trunk updated (139ad44 -> efce6b3)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git. from 139ad44 Update docs regarding timestamp precision new e2ecdf2 Remove broken "defragment-on-read" optimization new ecd23f1 Merge commit 'e2ecdf268a82fa3ac0f4c9fe77ab35bca33cc72a' into cassandra-3.11 new efce6b3 Merge branch 'cassandra-3.11' into trunk The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.txt| 1 + .../cassandra/db/SinglePartitionReadCommand.java | 25 -- .../db/compaction/AbstractCompactionStrategy.java | 5 - .../db/compaction/CompactionStrategyManager.java | 7 -- .../compaction/SizeTieredCompactionStrategy.java | 6 -- 5 files changed, 1 insertion(+), 43 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-3.11 updated (2beebbb -> ecd23f1)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git. from 2beebbb Merge branch 'cassandra-3.0' into cassandra-3.11 new e2ecdf2 Remove broken "defragment-on-read" optimization new ecd23f1 Merge commit 'e2ecdf268a82fa3ac0f4c9fe77ab35bca33cc72a' into cassandra-3.11 The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.txt| 1 + .../cassandra/db/SinglePartitionReadCommand.java | 24 -- .../db/compaction/AbstractCompactionStrategy.java | 5 - .../db/compaction/CompactionStrategyManager.java | 7 --- .../compaction/SizeTieredCompactionStrategy.java | 6 -- 5 files changed, 1 insertion(+), 42 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/01: Merge commit 'e2ecdf268a82fa3ac0f4c9fe77ab35bca33cc72a' into cassandra-3.11
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit ecd23f1da5894511cccac6c8445f962f3b73f733 Merge: 2beebbb e2ecdf2 Author: Sylvain Lebresne AuthorDate: Mon Aug 17 11:32:46 2020 +0200 Merge commit 'e2ecdf268a82fa3ac0f4c9fe77ab35bca33cc72a' into cassandra-3.11 CHANGES.txt| 1 + .../cassandra/db/SinglePartitionReadCommand.java | 24 -- .../db/compaction/AbstractCompactionStrategy.java | 5 - .../db/compaction/CompactionStrategyManager.java | 7 --- .../compaction/SizeTieredCompactionStrategy.java | 6 -- 5 files changed, 1 insertion(+), 42 deletions(-) diff --cc CHANGES.txt index 5168acb,9b4f8c3..a6bc9d9 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,7 -1,5 +1,8 @@@ -3.0.22: +3.11.8 + * Fix short read protection for GROUP BY queries (CASSANDRA-15459) + * Frozen RawTuple is not annotated with frozen in the toString method (CASSANDRA-15857) +Merged from 3.0: + * Remove broken 'defrag-on-read' optimization (CASSANDRA-15432) * Check for endpoint collision with hibernating nodes (CASSANDRA-14599) * Operational improvements and hardening for replica filtering protection (CASSANDRA-15907) * stop_paranoid disk failure policy is ignored on CorruptSSTableException after node is up (CASSANDRA-15191) diff --cc src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java index a820a89,ca4e8e3..c5de444 --- a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java +++ b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java @@@ -918,8 -882,7 +918,7 @@@ public class SinglePartitionReadComman } /* add the SSTables on disk */ -Collections.sort(view.sstables, SSTableReader.maxTimestampComparator); +Collections.sort(view.sstables, SSTableReader.maxTimestampDescending); - boolean onlyUnrepaired = true; // read sorted sstables SSTableReadMetricsCollector metricsCollector = new SSTableReadMetricsCollector(); for (SSTableReader sstable : view.sstables) @@@ -1012,28 -967,7 +1008,8 @@@ DecoratedKey key = result.partitionKey(); cfs.metric.samplers.get(TableMetrics.Sampler.READS).addSample(key.getKey(), key.hashCode(), 1); +StorageHook.instance.reportRead(cfs.metadata.cfId, partitionKey()); - // "hoist up" the requested data into a more recent sstable - if (metricsCollector.getMergedSSTables() > cfs.getMinimumCompactionThreshold() - && onlyUnrepaired - && !cfs.isAutoCompactionDisabled() - && cfs.getCompactionStrategyManager().shouldDefragment()) - { - // !!WARNING!! if we stop copying our data to a heap-managed object, - // we will need to track the lifetime of this mutation as well - Tracing.trace("Defragmenting requested data"); - - try (UnfilteredRowIterator iter = result.unfilteredIterator(columnFilter(), Slices.ALL, false)) - { - final Mutation mutation = new Mutation(PartitionUpdate.fromIterator(iter, columnFilter())); - StageManager.getStage(Stage.MUTATION).execute(() -> { - // skipping commitlog and index updates is fine since we're just de-fragmenting existing data - Keyspace.open(mutation.getKeyspaceName()).apply(mutation, false, false); - }); - } - } - return result.unfilteredIterator(columnFilter(), Slices.ALL, clusteringIndexFilter().isReversed()); } diff --cc src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java index 86170a1,5d4a254..d486679 --- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java @@@ -102,11 -64,8 +102,10 @@@ public class CompactionStrategyManager If a user changes the local compaction strategy and then later ALTERs a compaction parameter, we will use the new compaction parameters. - */ -private CompactionParams schemaCompactionParams; + **/ +private volatile CompactionParams schemaCompactionParams; - private boolean shouldDefragment; +private boolean supportsEarlyOpen; +private int fanout; public CompactionStrategyManager(ColumnFamilyStore cfs) { @@@ -206,28 -129,13 +205,27 @@@ private void startup() { -for (SSTableReader sstable : cfs.getSSTables(SSTableSet.CANONICAL)) +writeLock.lock(); +try { -if (sstable.openReason != SSTableReader.OpenReason.EARLY) -getCompactionStrategyFor(sstable).addSSTable(sstable); +
[cassandra] branch cassandra-3.0 updated: Remove broken "defragment-on-read" optimization
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-3.0 by this push: new e2ecdf2 Remove broken "defragment-on-read" optimization e2ecdf2 is described below commit e2ecdf268a82fa3ac0f4c9fe77ab35bca33cc72a Author: Sylvain Lebresne AuthorDate: Wed Aug 12 16:29:43 2020 +0200 Remove broken "defragment-on-read" optimization The read path for names queries has had a "defragment-on-read" optimization for a while whereby if too many sstables are hit by the read, the result is written back into memtable, in the hope that later reads will only read that newly written data in a single sstable (or at least fewer). The principle of that optimisation does not work however as data is written back with the same timestamp as it originally has and that means future reads cannot know to skip older sstables (at least with the metadata we currently store). As such, this optimisation never saved anything and in fact added load. The patch removes that broken code. Patch by Sylvain Lebresne, reviewed by Aleksey Yeschenko for CASSANDRA-15432 --- CHANGES.txt| 1 + .../cassandra/db/SinglePartitionReadCommand.java | 28 -- .../db/compaction/AbstractCompactionStrategy.java | 5 .../db/compaction/CompactionStrategyManager.java | 6 - .../compaction/SizeTieredCompactionStrategy.java | 6 - 5 files changed, 1 insertion(+), 45 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7d4b7a9..9b4f8c3 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.22: + * Remove broken 'defrag-on-read' optimization (CASSANDRA-15432) * Check for endpoint collision with hibernating nodes (CASSANDRA-14599) * Operational improvements and hardening for replica filtering protection (CASSANDRA-15907) * stop_paranoid disk failure policy is ignored on CorruptSSTableException after node is up (CASSANDRA-15191) diff --git a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java index 841c3b9..ca4e8e3 100644 --- a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java +++ b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java @@ -883,7 +883,6 @@ public class SinglePartitionReadCommand extends ReadCommand /* add the SSTables on disk */ Collections.sort(view.sstables, SSTableReader.maxTimestampComparator); -boolean onlyUnrepaired = true; // read sorted sstables SSTableReadMetricsCollector metricsCollector = new SSTableReadMetricsCollector(); for (SSTableReader sstable : view.sstables) @@ -952,9 +951,6 @@ public class SinglePartitionReadCommand extends ReadCommand if (iter.isEmpty()) continue; -if (sstable.isRepaired()) -onlyUnrepaired = false; - result = add( RTBoundValidator.validate(isForThrift() ? ThriftResultsMerger.maybeWrap(iter, nowInSec()) : iter, RTBoundValidator.Stage.SSTABLE, false), result, @@ -972,30 +968,6 @@ public class SinglePartitionReadCommand extends ReadCommand DecoratedKey key = result.partitionKey(); cfs.metric.samplers.get(TableMetrics.Sampler.READS).addSample(key.getKey(), key.hashCode(), 1); -// "hoist up" the requested data into a more recent sstable -if (metricsCollector.getMergedSSTables() > cfs.getMinimumCompactionThreshold() -&& onlyUnrepaired -&& !cfs.isAutoCompactionDisabled() -&& cfs.getCompactionStrategyManager().shouldDefragment()) -{ -// !!WARNING!! if we stop copying our data to a heap-managed object, -// we will need to track the lifetime of this mutation as well -Tracing.trace("Defragmenting requested data"); - -try (UnfilteredRowIterator iter = result.unfilteredIterator(columnFilter(), Slices.ALL, false)) -{ -final Mutation mutation = new Mutation(PartitionUpdate.fromIterator(iter)); -StageManager.getStage(Stage.MUTATION).execute(new Runnable() -{ -public void run() -{ -// skipping commitlog and index updates is fine since we're just de-fragmenting existing data - Keyspace.open(mutation.getKeyspaceName()).apply(mutation, false, false); -} -}); -} -} - return result.unfilteredIterator(columnFilter(), Slices.ALL, clus
[cassandra-dtest] branch master updated: Add test for the upgrade of KEYS 2i to 4.0 (CASSANDRA-15906)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cassandra-dtest.git The following commit(s) were added to refs/heads/master by this push: new f25832a Add test for the upgrade of KEYS 2i to 4.0 (CASSANDRA-15906) f25832a is described below commit f25832aef72d62e9f00a45c54b2cdc17dc9f2d7b Author: Sylvain Lebresne AuthorDate: Thu Jun 25 17:52:14 2020 +0200 Add test for the upgrade of KEYS 2i to 4.0 (CASSANDRA-15906) --- upgrade_tests/thrift_upgrade_test.py | 195 ++- 1 file changed, 190 insertions(+), 5 deletions(-) diff --git a/upgrade_tests/thrift_upgrade_test.py b/upgrade_tests/thrift_upgrade_test.py index b427660..8846625 100644 --- a/upgrade_tests/thrift_upgrade_test.py +++ b/upgrade_tests/thrift_upgrade_test.py @@ -2,15 +2,17 @@ import itertools import pytest import logging -from cassandra.query import dict_factory +from cassandra.query import dict_factory, SimpleStatement from dtest import RUN_STATIC_UPGRADE_MATRIX, Tester from thrift_bindings.thrift010 import Cassandra from thrift_bindings.thrift010.Cassandra import (Column, ColumnDef, - ColumnParent, ConsistencyLevel, - SlicePredicate, SliceRange) + ColumnParent, ConsistencyLevel, + IndexType, + SlicePredicate, SliceRange) from thrift_test import _i64, get_thrift_client -from tools.assertions import assert_length_equal, assert_lists_of_dicts_equal +from tools.assertions import (assert_all, assert_length_equal, + assert_lists_of_dicts_equal) from tools.misc import wait_for_agreement, add_skip from .upgrade_base import UpgradeTester from .upgrade_manifest import build_upgrade_pairs @@ -187,7 +189,6 @@ def _validate_dense_thrift(client, cf='dense_super_1'): assert cosc.super_column.columns[0].name == _i64(100) assert cosc.super_column.columns[0].value == 'value1'.encode() - @pytest.mark.upgrade_test class TestUpgradeSuperColumnsThrough(Tester): def upgrade_to_version(self, tag, nodes=None): @@ -373,6 +374,190 @@ class TestUpgradeSuperColumnsThrough(Tester): @pytest.mark.upgrade_test +@since('4') +class TestUpgradeTo40(Tester): +""" +Thrift is dead in 4.0. However, we still want to ensure users that used thrift + in 3.0 or earlier have an upgrade path to 4.0 and this class provides tests + cases for this. + + Note that we don't want to run this if the "current" version (the one we're + upgrading to) is not 4.0 or more, as the tests makes assumptions on that. +""" +def prepare(self, start_version, num_nodes=1, rf=1): +""" +Prepare the test, starting a cluster on the initial version, creating +a keyspace (named 'ks') and returning a CQL and a thrift connection to +the first node (and set on the created keyspace). + +:param start_version: the version to set the node at initially. +:param num_nodes: the number of nodes to use. +:param rf: replication factor for the keyspace created. +:return: a pair (cql, thrift) of a CQL connection and an open thrift +connection to the first node in the cluster. +""" +self.cluster.set_install_dir(version=start_version) +self.fixture_dtest_setup.reinitialize_cluster_for_different_version() + +self.cluster.populate(num_nodes) +for node in self.cluster.nodelist(): +node.set_configuration_options(values={'start_rpc': 'true'}) + +self.cluster.start() +logger.debug("Started node on %s", start_version) + +node = self.cluster.nodelist()[0] +cql = self.patient_cql_connection(node) + +cql.execute("CREATE KEYSPACE ks WITH replication = {{ 'class': 'SimpleStrategy', 'replication_factor': '{}' }}".format(rf)) +cql.execute("USE ks") + +host, port = node.network_interfaces['thrift'] +thrift = get_thrift_client(host, port) +thrift.transport.open() +thrift.set_keyspace('ks') +return cql, thrift + +def _connect(self, node): +connection = self.patient_cql_connection(node) +connection.execute("USE ks") +return connection + +def _do_rolling_upgrade(self, after_each_upgrade=None): +""" +Upgrade all the nodes in the cluster to the "current" version (so 4.0+) +in a rolling fashion. + +:param after_each_upgrade: if not None, a function that is called with 2 + arguments (in that order): + - the index of the node we just upgrade
[cassandra] 01/01: Merge branch 'cassandra-3.11' into trunk
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit dc3705a517e70ea8e975d79bee1664e4abd7d779 Merge: eebb9e0 c5b2a37 Author: Sylvain Lebresne AuthorDate: Wed Jul 1 14:57:05 2020 +0200 Merge branch 'cassandra-3.11' into trunk - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch trunk updated (eebb9e0 -> dc3705a)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git. from eebb9e0 Merge branch 'cassandra-3.11' into trunk new 64c80f4 Accepts 2i queries with only static columns for KEYS index new c5b2a37 Merge commit '64c80f4ef89f0cc88c15febed8c01eb07ae0a84e' into cassandra-3.11 new dc3705a Merge branch 'cassandra-3.11' into trunk The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/01: Merge commit '64c80f4ef89f0cc88c15febed8c01eb07ae0a84e' into cassandra-3.11
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit c5b2a37904b5373bd7eb418865c9770b8cc9d505 Merge: 9251b81 64c80f4 Author: Sylvain Lebresne AuthorDate: Wed Jul 1 14:56:50 2020 +0200 Merge commit '64c80f4ef89f0cc88c15febed8c01eb07ae0a84e' into cassandra-3.11 - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-3.11 updated (9251b81 -> c5b2a37)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git. from 9251b81 Fix cqlsh output when fetching all rows in batch mode new 64c80f4 Accepts 2i queries with only static columns for KEYS index new c5b2a37 Merge commit '64c80f4ef89f0cc88c15febed8c01eb07ae0a84e' into cassandra-3.11 The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-3.0 updated: Accepts 2i queries with only static columns for KEYS index
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-3.0 by this push: new 64c80f4 Accepts 2i queries with only static columns for KEYS index 64c80f4 is described below commit 64c80f4ef89f0cc88c15febed8c01eb07ae0a84e Author: Sylvain Lebresne AuthorDate: Mon Jun 29 16:27:01 2020 +0200 Accepts 2i queries with only static columns for KEYS index KEYS index can originally only be created on compact tables, which don't have static columns. However, through DROP COMPACT STORAGE, a previously compact table with a KEYS index will have its columns all be static, and queries of the 2i KEYS was rejected. This patch ensure the queries does went through in that case. Patch by Sylvain Lebresne, reviewed by Brandon Williams for CASSANDRA-15906 --- CHANGES.txt | 1 + .../cql3/restrictions/StatementRestrictions.java| 17 ++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7e1a4fd..d94041b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.21 + * Fix broken KEYS 2i queries after DROP COMPACT STORAGE (CASSANDRA-15906) * Add token to tombstone warning and error messages (CASSANDRA-15890) * Fixed range read concurrency factor computation and capped as 10 times tpc cores (CASSANDRA-15752) * Catch exception on bootstrap resume and init native transport (CASSANDRA-15863) diff --git a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java index 84c6958..d7d6f48 100644 --- a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java @@ -21,6 +21,7 @@ import java.nio.ByteBuffer; import java.util.*; import com.google.common.base.Joiner; +import com.google.common.collect.Iterables; import com.google.common.collect.Iterators; import org.apache.cassandra.config.CFMetaData; @@ -37,6 +38,7 @@ import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.index.Index; import org.apache.cassandra.index.SecondaryIndexManager; import org.apache.cassandra.net.MessagingService; +import org.apache.cassandra.schema.IndexMetadata; import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.btree.BTreeSet; @@ -838,9 +840,18 @@ public final class StatementRestrictions "Select on indexed columns and with IN clause for the PRIMARY KEY are not supported"); // When the user only select static columns, the intent is that we don't query the whole partition but just // the static parts. But 1) we don't have an easy way to do that with 2i and 2) since we don't support index on -// static columns -// so far, 2i means that you've restricted a non static column, so the query is somewhat non-sensical. -checkFalse(selectsOnlyStaticColumns, "Queries using 2ndary indexes don't support selecting only static columns"); +// static columns so far, 2i means that you've restricted a non static column, so the query is somewhat +// non-sensical. +// Note: an exception is if the index is a KEYS one. Which can happen if the user had a KEYS index on +// a compact table, and subsequently DROP COMPACT STORAGE on that table. After which, the KEYS index will still +// work, but queries will effectively be only on now-static columns and we should let this work. +checkFalse(selectsOnlyStaticColumns && !hasKeysIndex(cfm), + "Queries using 2ndary indexes don't support selecting only static columns"); +} + +private boolean hasKeysIndex(CFMetaData cfm) +{ +return Iterables.any(cfm.getIndexes(), i -> i.kind == IndexMetadata.Kind.KEYS); } /** - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/01: Merge branch 'cassandra-3.11' into trunk
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 44c4e1f7874c962309a853fa2434a9dd4ae16aeb Merge: e690e29 ebfd052 Author: Sylvain Lebresne AuthorDate: Wed May 27 17:18:43 2020 +0200 Merge branch 'cassandra-3.11' into trunk - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch trunk updated (e690e29 -> 44c4e1f)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git. from e690e29 Add docs section on configuring the Jenkins master to create the "Cassandra" category throttle. new 8358e19 Fix legacy handling of RangeTombstone with collection ones new c8a2834 Fix LegacyLayout handling of non-selected collection tombstones new ebfd052 Merge commit 'c8a2834606d683ba9945e9cc11bdb4207ce269d1' into cassandra-3.11 new 44c4e1f Merge branch 'cassandra-3.11' into trunk The 4 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/01: Merge commit 'c8a2834606d683ba9945e9cc11bdb4207ce269d1' into cassandra-3.11
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit ebfd05254f84000f71fa018650632d24d3761f07 Merge: 3cda9d7 c8a2834 Author: Sylvain Lebresne AuthorDate: Wed May 27 17:12:44 2020 +0200 Merge commit 'c8a2834606d683ba9945e9cc11bdb4207ce269d1' into cassandra-3.11 CHANGES.txt| 1 + src/java/org/apache/cassandra/db/LegacyLayout.java | 105 + .../cassandra/db/UnfilteredDeserializer.java | 129 - .../upgrade/MixedModeRangeTombstoneTest.java | 73 .../org/apache/cassandra/db/LegacyLayoutTest.java | 102 +--- 5 files changed, 340 insertions(+), 70 deletions(-) diff --cc CHANGES.txt index 11515c4,46b3f56..a809016 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,7 -1,5 +1,8 @@@ -3.0.21 +3.11.7 + * Fix CQL formatting of read command restrictions for slow query log (CASSANDRA-15503) + * Allow sstableloader to use SSL on the native port (CASSANDRA-14904) +Merged from 3.0: + * Fix duplicated row on 2.x upgrades when multi-rows range tombstones interact with collection ones (CASSANDRA-15805) * Rely on snapshotted session infos on StreamResultFuture.maybeComplete to avoid race conditions (CASSANDRA-15667) * EmptyType doesn't override writeValue so could attempt to write bytes when expected not to (CASSANDRA-15790) * Fix index queries on partition key columns when some partitions contains only static data (CASSANDRA-13666) diff --cc src/java/org/apache/cassandra/db/LegacyLayout.java index 4ec0c30,8492de5..b28c72a --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@@ -1891,9 -1934,9 +1936,9 @@@ public abstract class LegacyLayou if ((start.collectionName == null) != (stop.collectionName == null)) { if (start.collectionName == null) - stop = new LegacyBound(stop.bound, stop.isStatic, null); -stop = new LegacyBound(Slice.Bound.inclusiveEndOf(stop.bound.values), stop.isStatic, null); ++stop = new LegacyBound(ClusteringBound.inclusiveEndOf(stop.bound.values), stop.isStatic, null); else - start = new LegacyBound(start.bound, start.isStatic, null); -start = new LegacyBound(Slice.Bound.inclusiveStartOf(start.bound.values), start.isStatic, null); ++start = new LegacyBound(ClusteringBound.inclusiveStartOf(start.bound.values), start.isStatic, null); } else if (!Objects.equals(start.collectionName, stop.collectionName)) { @@@ -1920,11 -1963,21 +1965,21 @@@ return new LegacyRangeTombstone(newStart, stop, deletionTime); } -public LegacyRangeTombstone withNewStart(Slice.Bound newStart) ++public LegacyRangeTombstone withNewStart(ClusteringBound newStart) + { + return withNewStart(new LegacyBound(newStart, start.isStatic, null)); + } + public LegacyRangeTombstone withNewEnd(LegacyBound newStop) { return new LegacyRangeTombstone(start, newStop, deletionTime); } -public LegacyRangeTombstone withNewEnd(Slice.Bound newEnd) ++public LegacyRangeTombstone withNewEnd(ClusteringBound newEnd) + { + return withNewEnd(new LegacyBound(newEnd, stop.isStatic, null)); + } + public boolean isCell() { return false; diff --cc src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index cdcde2e,2d270bc..262b333 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@@ -480,19 -480,9 +480,10 @@@ public abstract class UnfilteredDeseria this.helper = helper; this.grouper = new LegacyLayout.CellGrouper(metadata, helper); this.tombstoneTracker = new TombstoneTracker(partitionDeletion); - this.atoms = new AtomIterator(atomReader); - } - - private boolean isRow(LegacyLayout.LegacyAtom atom) - { - if (atom.isCell()) - return true; - - LegacyLayout.LegacyRangeTombstone tombstone = atom.asRangeTombstone(); - return tombstone.isCollectionTombstone() || tombstone.isRowDeletion(metadata); + this.atoms = new AtomIterator(atomReader, metadata); } + public boolean hasNext() { // Note that we loop on next == null because TombstoneTracker.openNew() could return null below or the atom might be shadowed. @@@ -540,13 -530,57 +531,57
[cassandra] branch cassandra-3.11 updated (3cda9d7 -> ebfd052)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git. from 3cda9d7 Merge branch cassandra-3.0 into cassandra-3.11 new 8358e19 Fix legacy handling of RangeTombstone with collection ones new c8a2834 Fix LegacyLayout handling of non-selected collection tombstones new ebfd052 Merge commit 'c8a2834606d683ba9945e9cc11bdb4207ce269d1' into cassandra-3.11 The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.txt| 1 + src/java/org/apache/cassandra/db/LegacyLayout.java | 105 + .../cassandra/db/UnfilteredDeserializer.java | 129 - .../upgrade/MixedModeRangeTombstoneTest.java | 73 .../org/apache/cassandra/db/LegacyLayoutTest.java | 102 +--- 5 files changed, 340 insertions(+), 70 deletions(-) create mode 100644 test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeRangeTombstoneTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/02: Fix legacy handling of RangeTombstone with collection ones
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 8358e19840d352475a5831d130ff3c43a11f2f4e Author: Sylvain Lebresne AuthorDate: Fri May 8 18:12:55 2020 +0200 Fix legacy handling of RangeTombstone with collection ones When a multi-row range tombstone interacts with a a collection tombstone within one of a covered row, the resulting range tombstone in the legacy format will start in the middle of the row and extend past said row and it needs special handling. Before this commit, the code deserializing that RT was making it artificially start at the end of the row (in which the collection tombstone is), but that means that when `LegacyLayout.CellGrouper` encountered it, it decided the row was finished, even if it was not, leading to potential row duplication. The patch solves this by: 1. making that problematic tombstone start at the beginning of the row instead of its end (to avoid code deciding the row is over). 2. modify `UnfilteredDeserializer` to 'split' that range tombstone into a row tombstone for the row it covers, which is handled as a normal row tombstone, and push the rest of the range tombstone (that starts after the row and extends to the original end of the RT) to be handled after that row is fully "grouped". The patch also removes the possibility of getting an empty row from `LegacyLayout#getNextRow` to avoid theoretical problems with that. Patch by Sylvain Lebresne; reviewed by Marcus Eriksson & Aleksey Yeschenko for CASSANDRA-15805 --- CHANGES.txt| 1 + src/java/org/apache/cassandra/db/LegacyLayout.java | 99 .../cassandra/db/UnfilteredDeserializer.java | 129 - .../upgrade/MixedModeRangeTombstoneTest.java | 73 4 files changed, 252 insertions(+), 50 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index cdb9ad0..46b3f56 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.21 + * Fix duplicated row on 2.x upgrades when multi-rows range tombstones interact with collection ones (CASSANDRA-15805) * Rely on snapshotted session infos on StreamResultFuture.maybeComplete to avoid race conditions (CASSANDRA-15667) * EmptyType doesn't override writeValue so could attempt to write bytes when expected not to (CASSANDRA-15790) * Fix index queries on partition key columns when some partitions contains only static data (CASSANDRA-13666) diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java index 37cc935..39dd54a 100644 --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@ -1115,7 +1115,7 @@ public abstract class LegacyLayout return true; } -private static Comparator legacyAtomComparator(CFMetaData metadata) +static Comparator legacyAtomComparator(CFMetaData metadata) { return (o1, o2) -> { @@ -1373,8 +1373,24 @@ public abstract class LegacyLayout this.hasValidCells = false; } +/** + * Try adding the provided atom to the currently grouped row. + * + * @param atom the new atom to try to add. This must be a "row" atom, that is either a cell or a legacy + * range tombstone that covers only one row (row deletion) or a subset of it (collection + * deletion). Meaning that legacy range tombstone covering multiple rows (that should be handled as + * legit range tombstone in the new storage engine) should be handled separately. Atoms should also + * be provided in proper clustering order. + * @return {@code true} if the provided atom has been "consumed" by this grouper (this does _not_ mean the + * atom has been "used" by the grouper as the grouper will skip some shadowed atoms for instance, just + * that {@link #getRow()} shouldn't be called just yet if there is more atom in the atom iterator we're + * grouping). {@code false} otherwise, that is if the row currently built by this grouper is done + * _without_ the provided atom being "consumed" (and so {@link #getRow()} should be called and the + * grouper resetted, after which the provided atom should be provided again). + */ public boolean addAtom(LegacyAtom atom) { +assert atom.isRowAtom(metadata) : "Unexpected non in-row legacy range tombstone " + atom; return atom.isCell() ? addCell(atom.asCell()) : addRangeTombstone(atom
[cassandra] 02/02: Fix LegacyLayout handling of non-selected collection tombstones
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a commit to branch cassandra-3.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit c8a2834606d683ba9945e9cc11bdb4207ce269d1 Author: Sylvain Lebresne AuthorDate: Wed May 13 11:44:08 2020 +0200 Fix LegacyLayout handling of non-selected collection tombstones If a collection tombstone is not included by a query, it can be ignored, but it currently made `LegacyLayout.CellGrouper#addCollectionTombstone` return `false`, which made it stop the current row, which is incorrect (this can potentially lead to a duplicate row). This patch changes it to return `true`. Patch by Sylvain Lebresne; reviewed by Marcus Eriksson & Aleksey Yeschenko for CASSANDRA-15805 --- src/java/org/apache/cassandra/db/LegacyLayout.java | 6 +- .../org/apache/cassandra/db/LegacyLayoutTest.java | 102 + 2 files changed, 88 insertions(+), 20 deletions(-) diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java index 39dd54a..8492de5 100644 --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@ -1537,8 +1537,12 @@ public abstract class LegacyLayout private boolean addCollectionTombstone(LegacyRangeTombstone tombstone) { +// If the collection tombstone is not included in the query (which technically would only apply to thrift +// queries since CQL one "fetch" everything), we can skip it (so return), but we're problably still within +// the current row so we return `true`. Technically, it is possible that tombstone belongs to another row +// that the row currently grouped, but as we ignore it, returning `true` is ok in that case too. if (!helper.includes(tombstone.start.collectionName)) -return false; // see CASSANDRA-13109 +return true; // see CASSANDRA-13109 // The helper needs to be informed about the current complex column identifier before // it can perform the comparison between the recorded drop time and the RT deletion time. diff --git a/test/unit/org/apache/cassandra/db/LegacyLayoutTest.java b/test/unit/org/apache/cassandra/db/LegacyLayoutTest.java index 0bb2459..f0d2a02 100644 --- a/test/unit/org/apache/cassandra/db/LegacyLayoutTest.java +++ b/test/unit/org/apache/cassandra/db/LegacyLayoutTest.java @@ -24,18 +24,19 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import org.apache.cassandra.db.LegacyLayout.CellGrouper; +import org.apache.cassandra.db.LegacyLayout.LegacyBound; +import org.apache.cassandra.db.LegacyLayout.LegacyCell; +import org.apache.cassandra.db.LegacyLayout.LegacyRangeTombstone; import org.apache.cassandra.db.filter.ColumnFilter; import org.apache.cassandra.db.marshal.MapType; import org.apache.cassandra.db.marshal.UTF8Type; -import org.apache.cassandra.db.partitions.ImmutableBTreePartition; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; import org.apache.cassandra.db.rows.RowIterator; -import org.apache.cassandra.db.rows.Rows; import org.apache.cassandra.db.rows.SerializationHelper; import org.apache.cassandra.db.rows.UnfilteredRowIterator; import org.apache.cassandra.db.rows.UnfilteredRowIteratorSerializer; -import org.apache.cassandra.db.rows.UnfilteredRowIterators; import org.apache.cassandra.db.transform.FilteredRows; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.io.util.DataInputBuffer; @@ -62,10 +63,10 @@ import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.Row; import org.apache.cassandra.dht.Murmur3Partitioner; import org.apache.cassandra.schema.KeyspaceParams; -import org.apache.cassandra.utils.ByteBufferUtil; import org.apache.cassandra.utils.Hex; import static org.apache.cassandra.net.MessagingService.VERSION_21; +import static org.apache.cassandra.utils.ByteBufferUtil.bytes; import static org.junit.Assert.*; public class LegacyLayoutTest @@ -98,7 +99,7 @@ public class LegacyLayoutTest builder.addComplexDeletion(b, new DeletionTime(1L, 1)); Row row = builder.build(); -ByteBuffer key = ByteBufferUtil.bytes(1); +ByteBuffer key = bytes(1); PartitionUpdate upd = PartitionUpdate.singleRowUpdate(table, key, row); LegacyLayout.LegacyUnfilteredPartition p = LegacyLayout.fromUnfilteredRowIterator(null, upd.unfilteredIterator()); @@ -216,7 +217,7 @@ public class LegacyLayoutTest builder.addCell(new BufferCell(v, 1L, Cell.NO_TTL, Cell.NO_DELETION_TIME, Int32Serializer.instance.serialize(1), null)); Row row = builder.build(); -DecoratedKey pk = table.decorateKey(ByteBufferUtil.bytes(1)); +D
[cassandra] branch cassandra-3.0 updated (a4b6deb -> c8a2834)
This is an automated email from the ASF dual-hosted git repository. slebresne pushed a change to branch cassandra-3.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git. from a4b6deb Rely on snapshotted session infos on StreamResultFuture.maybeComplete to avoid races new 8358e19 Fix legacy handling of RangeTombstone with collection ones new c8a2834 Fix LegacyLayout handling of non-selected collection tombstones The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: CHANGES.txt| 1 + src/java/org/apache/cassandra/db/LegacyLayout.java | 105 + .../cassandra/db/UnfilteredDeserializer.java | 129 - .../upgrade/MixedModeRangeTombstoneTest.java | 73 .../org/apache/cassandra/db/LegacyLayoutTest.java | 102 +--- 5 files changed, 340 insertions(+), 70 deletions(-) create mode 100644 test/distributed/org/apache/cassandra/distributed/upgrade/MixedModeRangeTombstoneTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[4/6] cassandra git commit: Merge commit 'a4b8d1e9bc67eb0eff159b5b35902cab19e3fc11' into cassandra-3.11
Merge commit 'a4b8d1e9bc67eb0eff159b5b35902cab19e3fc11' into cassandra-3.11 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/942fe3fb Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/942fe3fb Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/942fe3fb Branch: refs/heads/trunk Commit: 942fe3fb3d81b0f78164ab35c174130c2395a402 Parents: 49e63c2 a4b8d1e Author: Sylvain Lebresne Authored: Thu Jul 5 09:27:51 2018 +0200 Committer: Sylvain Lebresne Committed: Thu Jul 5 09:27:51 2018 +0200 -- -- - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[5/6] cassandra git commit: Merge commit 'a4b8d1e9bc67eb0eff159b5b35902cab19e3fc11' into cassandra-3.11
Merge commit 'a4b8d1e9bc67eb0eff159b5b35902cab19e3fc11' into cassandra-3.11 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/942fe3fb Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/942fe3fb Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/942fe3fb Branch: refs/heads/cassandra-3.11 Commit: 942fe3fb3d81b0f78164ab35c174130c2395a402 Parents: 49e63c2 a4b8d1e Author: Sylvain Lebresne Authored: Thu Jul 5 09:27:51 2018 +0200 Committer: Sylvain Lebresne Committed: Thu Jul 5 09:27:51 2018 +0200 -- -- - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[2/6] 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/a4b8d1e9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a4b8d1e9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a4b8d1e9 Branch: refs/heads/cassandra-3.11 Commit: a4b8d1e9bc67eb0eff159b5b35902cab19e3fc11 Parents: 93012e4 Author: Sylvain Lebresne Authored: Thu Jul 5 09:24:17 2018 +0200 Committer: Sylvain Lebresne Committed: Thu Jul 5 09:24:17 2018 +0200 -- test/unit/org/apache/cassandra/db/CounterCellTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a4b8d1e9/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --git a/test/unit/org/apache/cassandra/db/CounterCellTest.java b/test/unit/org/apache/cassandra/db/CounterCellTest.java index 8859fc6..b4c7b2a 100644 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@ -32,7 +32,6 @@ import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; -import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; import org.apache.cassandra.db.rows.Row; @@ -292,10 +291,10 @@ public class CounterCellTest ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(COUNTER1); ColumnDefinition emptyColDef = cfs.metadata.getColumnDefinition(ByteBufferUtil.bytes("val2")); -BufferCell emptyCell = BufferCell.live(emptyColDef, 0, ByteBuffer.allocate(0)); +BufferCell emptyCell = BufferCell.live(cfs.metadata, emptyColDef, 0, ByteBuffer.allocate(0)); Row.Builder builder = BTreeRow.unsortedBuilder(0); - builder.newRow(Clustering.make(AsciiSerializer.instance.serialize("test"))); +builder.newRow(new Clustering(AsciiSerializer.instance.serialize("test"))); builder.addCell(emptyCell); Row row = builder.build(); - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[3/6] 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/a4b8d1e9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a4b8d1e9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a4b8d1e9 Branch: refs/heads/trunk Commit: a4b8d1e9bc67eb0eff159b5b35902cab19e3fc11 Parents: 93012e4 Author: Sylvain Lebresne Authored: Thu Jul 5 09:24:17 2018 +0200 Committer: Sylvain Lebresne Committed: Thu Jul 5 09:24:17 2018 +0200 -- test/unit/org/apache/cassandra/db/CounterCellTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a4b8d1e9/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --git a/test/unit/org/apache/cassandra/db/CounterCellTest.java b/test/unit/org/apache/cassandra/db/CounterCellTest.java index 8859fc6..b4c7b2a 100644 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@ -32,7 +32,6 @@ import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; -import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; import org.apache.cassandra.db.rows.Row; @@ -292,10 +291,10 @@ public class CounterCellTest ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(COUNTER1); ColumnDefinition emptyColDef = cfs.metadata.getColumnDefinition(ByteBufferUtil.bytes("val2")); -BufferCell emptyCell = BufferCell.live(emptyColDef, 0, ByteBuffer.allocate(0)); +BufferCell emptyCell = BufferCell.live(cfs.metadata, emptyColDef, 0, ByteBuffer.allocate(0)); Row.Builder builder = BTreeRow.unsortedBuilder(0); - builder.newRow(Clustering.make(AsciiSerializer.instance.serialize("test"))); +builder.newRow(new Clustering(AsciiSerializer.instance.serialize("test"))); builder.addCell(emptyCell); Row row = builder.build(); - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[1/6] cassandra git commit: Fix build
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 93012e43e -> a4b8d1e9b refs/heads/cassandra-3.11 49e63c273 -> 942fe3fb3 refs/heads/trunk 243c371f4 -> 9e3b88646 Fix build Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a4b8d1e9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a4b8d1e9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a4b8d1e9 Branch: refs/heads/cassandra-3.0 Commit: a4b8d1e9bc67eb0eff159b5b35902cab19e3fc11 Parents: 93012e4 Author: Sylvain Lebresne Authored: Thu Jul 5 09:24:17 2018 +0200 Committer: Sylvain Lebresne Committed: Thu Jul 5 09:24:17 2018 +0200 -- test/unit/org/apache/cassandra/db/CounterCellTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a4b8d1e9/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --git a/test/unit/org/apache/cassandra/db/CounterCellTest.java b/test/unit/org/apache/cassandra/db/CounterCellTest.java index 8859fc6..b4c7b2a 100644 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@ -32,7 +32,6 @@ import org.apache.cassandra.config.ColumnDefinition; import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; -import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; import org.apache.cassandra.db.rows.Row; @@ -292,10 +291,10 @@ public class CounterCellTest ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(COUNTER1); ColumnDefinition emptyColDef = cfs.metadata.getColumnDefinition(ByteBufferUtil.bytes("val2")); -BufferCell emptyCell = BufferCell.live(emptyColDef, 0, ByteBuffer.allocate(0)); +BufferCell emptyCell = BufferCell.live(cfs.metadata, emptyColDef, 0, ByteBuffer.allocate(0)); Row.Builder builder = BTreeRow.unsortedBuilder(0); - builder.newRow(Clustering.make(AsciiSerializer.instance.serialize("test"))); +builder.newRow(new Clustering(AsciiSerializer.instance.serialize("test"))); builder.addCell(emptyCell); Row row = builder.build(); - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9e3b8864 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9e3b8864 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9e3b8864 Branch: refs/heads/trunk Commit: 9e3b88646ff4f97601baf40be7fb708ebb3f7fed Parents: 243c371 942fe3f Author: Sylvain Lebresne Authored: Thu Jul 5 09:30:03 2018 +0200 Committer: Sylvain Lebresne Committed: Thu Jul 5 09:30:03 2018 +0200 -- -- - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/49e63c27 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/49e63c27 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/49e63c27 Branch: refs/heads/cassandra-3.11 Commit: 49e63c273e973c0f8ab3769caae6f82c18449f44 Parents: c3a66ab 93012e4 Author: Sylvain Lebresne Authored: Wed Jul 4 11:51:34 2018 +0200 Committer: Sylvain Lebresne Committed: Wed Jul 4 11:51:34 2018 +0200 -- CHANGES.txt | 1 + .../cassandra/db/context/CounterContext.java| 3 +++ .../apache/cassandra/db/CounterCellTest.java| 23 3 files changed, 27 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/49e63c27/CHANGES.txt -- diff --cc CHANGES.txt index 951b0c0,00944dc..32ccda3 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,23 -1,6 +1,24 @@@ -3.0.17 +3.11.3 + * Validate supported column type with SASI analyzer (CASSANDRA-13669) + * Remove BTree.Builder Recycler to reduce memory usage (CASSANDRA-13929) + * Reduce nodetool GC thread count (CASSANDRA-14475) + * Fix New SASI view creation during Index Redistribution (CASSANDRA-14055) + * Remove string formatting lines from BufferPool hot path (CASSANDRA-14416) + * Update metrics to 3.1.5 (CASSANDRA-12924) + * Detect OpenJDK jvm type and architecture (CASSANDRA-12793) + * Don't use guava collections in the non-system keyspace jmx attributes (CASSANDRA-12271) + * Allow existing nodes to use all peers in shadow round (CASSANDRA-13851) + * Fix cqlsh to read connection.ssl cqlshrc option again (CASSANDRA-14299) + * Downgrade log level to trace for CommitLogSegmentManager (CASSANDRA-14370) + * CQL fromJson(null) throws NullPointerException (CASSANDRA-13891) + * Serialize empty buffer as empty string for json output format (CASSANDRA-14245) + * Allow logging implementation to be interchanged for embedded testing (CASSANDRA-13396) + * SASI tokenizer for simple delimiter based entries (CASSANDRA-14247) + * Fix Loss of digits when doing CAST from varint/bigint to decimal (CASSANDRA-14170) + * RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163) + * Fix wildcard GROUP BY queries (CASSANDRA-14209) +Merged from 3.0: + * Fix potential IndexOutOfBoundsException with counters (CASSANDRA-14167) - * Restore resumable hints delivery, backport CASSANDRA-11960 (CASSANDRA-14419) * Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515) * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513) * Fix regression of lagging commitlog flush log message (CASSANDRA-14451) http://git-wip-us.apache.org/repos/asf/cassandra/blob/49e63c27/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --cc test/unit/org/apache/cassandra/db/CounterCellTest.java index 74599c3,8859fc6..5208cb2 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@@ -29,12 -29,16 +29,15 @@@ import org.junit.Test import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.config.ColumnDefinition; + import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; -import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; + import org.apache.cassandra.db.rows.Row; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.schema.KeyspaceParams; + import org.apache.cassandra.serializers.AsciiSerializer; import org.apache.cassandra.utils.*; import static org.junit.Assert.*; - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[3/6] cassandra git commit: Ignore empty Counter cells on digest calculation.
Ignore empty Counter cells on digest calculation. patch by Francisco Fernández Castaño; reviewed by Sylvain Lebresne for CASSANDRA-14167 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/93012e43 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/93012e43 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/93012e43 Branch: refs/heads/trunk Commit: 93012e43ea03411456c20e7cec1ede73ff46b7d2 Parents: c498258 Author: Fransisco Fernandez Castano Authored: Sun Apr 22 13:08:26 2018 +0200 Committer: Sylvain Lebresne Committed: Wed Jul 4 11:50:41 2018 +0200 -- CHANGES.txt | 1 + .../cassandra/db/context/CounterContext.java| 3 +++ .../apache/cassandra/db/CounterCellTest.java| 23 3 files changed, 27 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index ee95718..00944dc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.17 + * Fix potential IndexOutOfBoundsException with counters (CASSANDRA-14167) * Restore resumable hints delivery, backport CASSANDRA-11960 (CASSANDRA-14419) * Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515) * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513) http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/src/java/org/apache/cassandra/db/context/CounterContext.java -- diff --git a/src/java/org/apache/cassandra/db/context/CounterContext.java b/src/java/org/apache/cassandra/db/context/CounterContext.java index 29e5cfc..b402464 100644 --- a/src/java/org/apache/cassandra/db/context/CounterContext.java +++ b/src/java/org/apache/cassandra/db/context/CounterContext.java @@ -692,6 +692,9 @@ public class CounterContext */ public void updateDigest(MessageDigest message, ByteBuffer context) { +// context can be empty due to the optimization from CASSANDRA-10657 +if (!context.hasRemaining()) +return; ByteBuffer dup = context.duplicate(); dup.position(context.position() + headerLength(context)); message.update(dup); http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --git a/test/unit/org/apache/cassandra/db/CounterCellTest.java b/test/unit/org/apache/cassandra/db/CounterCellTest.java index a8ddfcc..8859fc6 100644 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@ -29,13 +29,16 @@ import org.junit.Test; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; +import org.apache.cassandra.db.rows.Row; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.serializers.AsciiSerializer; import org.apache.cassandra.utils.*; import static org.junit.Assert.*; @@ -281,4 +284,24 @@ public class CounterCellTest assert Arrays.equals(digest1.digest(), digest2.digest()); } + +@Test +public void testDigestWithEmptyCells() throws Exception +{ +// For DB-1881 +ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(COUNTER1); + +ColumnDefinition emptyColDef = cfs.metadata.getColumnDefinition(ByteBufferUtil.bytes("val2")); +BufferCell emptyCell = BufferCell.live(emptyColDef, 0, ByteBuffer.allocate(0)); + +Row.Builder builder = BTreeRow.unsortedBuilder(0); + builder.newRow(Clustering.make(AsciiSerializer.instance.serialize("test"))); +builder.addCell(emptyCell); +Row row = builder.build(); + +MessageDigest digest = MessageDigest.getInstance("md5"); +row.digest(digest); +assertNotNull(digest.digest()); +} + } - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[1/6] cassandra git commit: Ignore empty Counter cells on digest calculation.
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 c4982587b -> 93012e43e refs/heads/cassandra-3.11 c3a66ab1e -> 49e63c273 refs/heads/trunk d500100a4 -> 243c371f4 Ignore empty Counter cells on digest calculation. patch by Francisco Fernández Castaño; reviewed by Sylvain Lebresne for CASSANDRA-14167 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/93012e43 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/93012e43 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/93012e43 Branch: refs/heads/cassandra-3.0 Commit: 93012e43ea03411456c20e7cec1ede73ff46b7d2 Parents: c498258 Author: Fransisco Fernandez Castano Authored: Sun Apr 22 13:08:26 2018 +0200 Committer: Sylvain Lebresne Committed: Wed Jul 4 11:50:41 2018 +0200 -- CHANGES.txt | 1 + .../cassandra/db/context/CounterContext.java| 3 +++ .../apache/cassandra/db/CounterCellTest.java| 23 3 files changed, 27 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index ee95718..00944dc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.17 + * Fix potential IndexOutOfBoundsException with counters (CASSANDRA-14167) * Restore resumable hints delivery, backport CASSANDRA-11960 (CASSANDRA-14419) * Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515) * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513) http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/src/java/org/apache/cassandra/db/context/CounterContext.java -- diff --git a/src/java/org/apache/cassandra/db/context/CounterContext.java b/src/java/org/apache/cassandra/db/context/CounterContext.java index 29e5cfc..b402464 100644 --- a/src/java/org/apache/cassandra/db/context/CounterContext.java +++ b/src/java/org/apache/cassandra/db/context/CounterContext.java @@ -692,6 +692,9 @@ public class CounterContext */ public void updateDigest(MessageDigest message, ByteBuffer context) { +// context can be empty due to the optimization from CASSANDRA-10657 +if (!context.hasRemaining()) +return; ByteBuffer dup = context.duplicate(); dup.position(context.position() + headerLength(context)); message.update(dup); http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --git a/test/unit/org/apache/cassandra/db/CounterCellTest.java b/test/unit/org/apache/cassandra/db/CounterCellTest.java index a8ddfcc..8859fc6 100644 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@ -29,13 +29,16 @@ import org.junit.Test; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; +import org.apache.cassandra.db.rows.Row; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.serializers.AsciiSerializer; import org.apache.cassandra.utils.*; import static org.junit.Assert.*; @@ -281,4 +284,24 @@ public class CounterCellTest assert Arrays.equals(digest1.digest(), digest2.digest()); } + +@Test +public void testDigestWithEmptyCells() throws Exception +{ +// For DB-1881 +ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(COUNTER1); + +ColumnDefinition emptyColDef = cfs.metadata.getColumnDefinition(ByteBufferUtil.bytes("val2")); +BufferCell emptyCell = BufferCell.live(emptyColDef, 0, ByteBuffer.allocate(0)); + +Row.Builder builder = BTreeRow.unsortedBuilder(0); + builder.newRow(Clustering.make(AsciiSerializer.instance.serialize("test"))); +builder.addCell(emptyCell); +Row row = builder.build(); + +MessageDigest digest = MessageDigest.getInstance("md5"); +row.digest(digest); +assertNotNull(digest.digest()); +} + } - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail:
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/49e63c27 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/49e63c27 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/49e63c27 Branch: refs/heads/trunk Commit: 49e63c273e973c0f8ab3769caae6f82c18449f44 Parents: c3a66ab 93012e4 Author: Sylvain Lebresne Authored: Wed Jul 4 11:51:34 2018 +0200 Committer: Sylvain Lebresne Committed: Wed Jul 4 11:51:34 2018 +0200 -- CHANGES.txt | 1 + .../cassandra/db/context/CounterContext.java| 3 +++ .../apache/cassandra/db/CounterCellTest.java| 23 3 files changed, 27 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/49e63c27/CHANGES.txt -- diff --cc CHANGES.txt index 951b0c0,00944dc..32ccda3 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,23 -1,6 +1,24 @@@ -3.0.17 +3.11.3 + * Validate supported column type with SASI analyzer (CASSANDRA-13669) + * Remove BTree.Builder Recycler to reduce memory usage (CASSANDRA-13929) + * Reduce nodetool GC thread count (CASSANDRA-14475) + * Fix New SASI view creation during Index Redistribution (CASSANDRA-14055) + * Remove string formatting lines from BufferPool hot path (CASSANDRA-14416) + * Update metrics to 3.1.5 (CASSANDRA-12924) + * Detect OpenJDK jvm type and architecture (CASSANDRA-12793) + * Don't use guava collections in the non-system keyspace jmx attributes (CASSANDRA-12271) + * Allow existing nodes to use all peers in shadow round (CASSANDRA-13851) + * Fix cqlsh to read connection.ssl cqlshrc option again (CASSANDRA-14299) + * Downgrade log level to trace for CommitLogSegmentManager (CASSANDRA-14370) + * CQL fromJson(null) throws NullPointerException (CASSANDRA-13891) + * Serialize empty buffer as empty string for json output format (CASSANDRA-14245) + * Allow logging implementation to be interchanged for embedded testing (CASSANDRA-13396) + * SASI tokenizer for simple delimiter based entries (CASSANDRA-14247) + * Fix Loss of digits when doing CAST from varint/bigint to decimal (CASSANDRA-14170) + * RateBasedBackPressure unnecessarily invokes a lock on the Guava RateLimiter (CASSANDRA-14163) + * Fix wildcard GROUP BY queries (CASSANDRA-14209) +Merged from 3.0: + * Fix potential IndexOutOfBoundsException with counters (CASSANDRA-14167) - * Restore resumable hints delivery, backport CASSANDRA-11960 (CASSANDRA-14419) * Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515) * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513) * Fix regression of lagging commitlog flush log message (CASSANDRA-14451) http://git-wip-us.apache.org/repos/asf/cassandra/blob/49e63c27/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --cc test/unit/org/apache/cassandra/db/CounterCellTest.java index 74599c3,8859fc6..5208cb2 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@@ -29,12 -29,16 +29,15 @@@ import org.junit.Test import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.config.ColumnDefinition; + import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; -import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; + import org.apache.cassandra.db.rows.Row; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.schema.KeyspaceParams; + import org.apache.cassandra.serializers.AsciiSerializer; import org.apache.cassandra.utils.*; import static org.junit.Assert.*; - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/243c371f Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/243c371f Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/243c371f Branch: refs/heads/trunk Commit: 243c371f4881be554439731cb809680a37c875ac Parents: d500100 49e63c2 Author: Sylvain Lebresne Authored: Wed Jul 4 12:10:05 2018 +0200 Committer: Sylvain Lebresne Committed: Wed Jul 4 12:10:05 2018 +0200 -- CHANGES.txt | 1 + .../cassandra/db/context/CounterContext.java| 3 +++ .../apache/cassandra/db/CounterCellTest.java| 24 +++- 3 files changed, 27 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/243c371f/CHANGES.txt -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/243c371f/src/java/org/apache/cassandra/db/context/CounterContext.java -- diff --cc src/java/org/apache/cassandra/db/context/CounterContext.java index 9b34231,b402464..29dc3f0 --- a/src/java/org/apache/cassandra/db/context/CounterContext.java +++ b/src/java/org/apache/cassandra/db/context/CounterContext.java @@@ -690,11 -690,14 +690,14 @@@ public class CounterContex * nodes. This means in particular that we always have: * updateDigest(ctx) == updateDigest(clearAllLocal(ctx)) */ -public void updateDigest(MessageDigest message, ByteBuffer context) +public void updateDigest(Hasher hasher, ByteBuffer context) { + // context can be empty due to the optimization from CASSANDRA-10657 + if (!context.hasRemaining()) + return; ByteBuffer dup = context.duplicate(); dup.position(context.position() + headerLength(context)); -message.update(dup); +HashingUtils.updateBytes(hasher, dup); } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/243c371f/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --cc test/unit/org/apache/cassandra/db/CounterCellTest.java index b410427,5208cb2..0ee59e1 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@@ -27,8 -28,8 +27,8 @@@ import org.junit.BeforeClass import org.junit.Test; import org.apache.cassandra.SchemaLoader; - import org.apache.cassandra.net.MessagingService; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; + import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; import org.apache.cassandra.db.rows.Cells; @@@ -272,12 -275,32 +274,32 @@@ public class CounterCellTes Cell original = createCounterCellFromContext(cfs, col, state, 5); -ColumnDefinition cDef = cfs.metadata.getColumnDefinition(col); +ColumnMetadata cDef = cfs.metadata().getColumn(col); Cell cleared = BufferCell.live(cDef, 5, CounterContext.instance().clearAllLocal(state.context)); -original.digest(digest1); -cleared.digest(digest2); +original.digest(hasher1); +cleared.digest(hasher2); -assert Arrays.equals(digest1.digest(), digest2.digest()); +Assert.assertEquals(hasher1.hash(), hasher2.hash()); } + + @Test + public void testDigestWithEmptyCells() throws Exception + { + // For DB-1881 + ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(COUNTER1); + -ColumnDefinition emptyColDef = cfs.metadata.getColumnDefinition(ByteBufferUtil.bytes("val2")); ++ColumnMetadata emptyColDef = cfs.metadata().getColumn(ByteBufferUtil.bytes("val2")); + BufferCell emptyCell = BufferCell.live(emptyColDef, 0, ByteBuffer.allocate(0)); + + Row.Builder builder = BTreeRow.unsortedBuilder(0); + builder.newRow(Clustering.make(AsciiSerializer.instance.serialize("test"))); + builder.addCell(emptyCell); + Row row = builder.build(); + -MessageDigest digest = MessageDigest.getInstance("md5"); -row.digest(digest); -assertNotNull(digest.digest()); ++Hasher hasher = HashingUtils.CURRENT_HASH_FUNCTION.newHasher(); ++row.digest(hasher); ++assertNotNull(hasher.hash()); + } + } - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail:
[2/6] cassandra git commit: Ignore empty Counter cells on digest calculation.
Ignore empty Counter cells on digest calculation. patch by Francisco Fernández Castaño; reviewed by Sylvain Lebresne for CASSANDRA-14167 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/93012e43 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/93012e43 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/93012e43 Branch: refs/heads/cassandra-3.11 Commit: 93012e43ea03411456c20e7cec1ede73ff46b7d2 Parents: c498258 Author: Fransisco Fernandez Castano Authored: Sun Apr 22 13:08:26 2018 +0200 Committer: Sylvain Lebresne Committed: Wed Jul 4 11:50:41 2018 +0200 -- CHANGES.txt | 1 + .../cassandra/db/context/CounterContext.java| 3 +++ .../apache/cassandra/db/CounterCellTest.java| 23 3 files changed, 27 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index ee95718..00944dc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.17 + * Fix potential IndexOutOfBoundsException with counters (CASSANDRA-14167) * Restore resumable hints delivery, backport CASSANDRA-11960 (CASSANDRA-14419) * Always close RT markers returned by ReadCommand#executeLocally() (CASSANDRA-14515) * Reverse order queries with range tombstones can cause data loss (CASSANDRA-14513) http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/src/java/org/apache/cassandra/db/context/CounterContext.java -- diff --git a/src/java/org/apache/cassandra/db/context/CounterContext.java b/src/java/org/apache/cassandra/db/context/CounterContext.java index 29e5cfc..b402464 100644 --- a/src/java/org/apache/cassandra/db/context/CounterContext.java +++ b/src/java/org/apache/cassandra/db/context/CounterContext.java @@ -692,6 +692,9 @@ public class CounterContext */ public void updateDigest(MessageDigest message, ByteBuffer context) { +// context can be empty due to the optimization from CASSANDRA-10657 +if (!context.hasRemaining()) +return; ByteBuffer dup = context.duplicate(); dup.position(context.position() + headerLength(context)); message.update(dup); http://git-wip-us.apache.org/repos/asf/cassandra/blob/93012e43/test/unit/org/apache/cassandra/db/CounterCellTest.java -- diff --git a/test/unit/org/apache/cassandra/db/CounterCellTest.java b/test/unit/org/apache/cassandra/db/CounterCellTest.java index a8ddfcc..8859fc6 100644 --- a/test/unit/org/apache/cassandra/db/CounterCellTest.java +++ b/test/unit/org/apache/cassandra/db/CounterCellTest.java @@ -29,13 +29,16 @@ import org.junit.Test; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.db.rows.BTreeRow; import org.apache.cassandra.db.rows.BufferCell; import org.apache.cassandra.db.rows.Cell; import org.apache.cassandra.db.rows.CellPath; import org.apache.cassandra.db.rows.Cells; import org.apache.cassandra.db.context.CounterContext; +import org.apache.cassandra.db.rows.Row; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.schema.KeyspaceParams; +import org.apache.cassandra.serializers.AsciiSerializer; import org.apache.cassandra.utils.*; import static org.junit.Assert.*; @@ -281,4 +284,24 @@ public class CounterCellTest assert Arrays.equals(digest1.digest(), digest2.digest()); } + +@Test +public void testDigestWithEmptyCells() throws Exception +{ +// For DB-1881 +ColumnFamilyStore cfs = Keyspace.open(KEYSPACE1).getColumnFamilyStore(COUNTER1); + +ColumnDefinition emptyColDef = cfs.metadata.getColumnDefinition(ByteBufferUtil.bytes("val2")); +BufferCell emptyCell = BufferCell.live(emptyColDef, 0, ByteBuffer.allocate(0)); + +Row.Builder builder = BTreeRow.unsortedBuilder(0); + builder.newRow(Clustering.make(AsciiSerializer.instance.serialize("test"))); +builder.addCell(emptyCell); +Row row = builder.build(); + +MessageDigest digest = MessageDigest.getInstance("md5"); +row.digest(digest); +assertNotNull(digest.digest()); +} + } - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[2/6] cassandra git commit: Fix serialized size of DataLimits
Fix serialized size of DataLimits patch by Sylvain Lebresne; reviewed by Jason Brown for CASSANDRA-14057 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eb05025c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eb05025c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eb05025c Branch: refs/heads/cassandra-3.11 Commit: eb05025c0a768241ea61fd86db9a88cfd8f6e93e Parents: f1e850a Author: Sylvain LebresneAuthored: Fri Nov 17 15:46:58 2017 +0100 Committer: Sylvain Lebresne Committed: Sat Nov 18 14:16:42 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/TypeSizes.java | 6 ++ 2 files changed, 7 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb05025c/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index a3c43fd..6c50a3f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.16 + * Fix serialized size of DataLimits (CASSANDRA-14057) * Add flag to allow dropping oversized read repair mutations (CASSANDRA-13975) * Fix SSTableLoader logger message (CASSANDRA-14003) * Fix repair race that caused gossip to block (CASSANDRA-13849) http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb05025c/src/java/org/apache/cassandra/db/TypeSizes.java -- diff --git a/src/java/org/apache/cassandra/db/TypeSizes.java b/src/java/org/apache/cassandra/db/TypeSizes.java index 6543025..b47e300 100644 --- a/src/java/org/apache/cassandra/db/TypeSizes.java +++ b/src/java/org/apache/cassandra/db/TypeSizes.java @@ -28,6 +28,7 @@ public final class TypeSizes private TypeSizes(){} private static final int BOOL_SIZE = 1; +private static final int BYTE_SIZE = 1; private static final int SHORT_SIZE = 2; private static final int INT_SIZE = 4; private static final int LONG_SIZE = 8; @@ -78,6 +79,11 @@ public final class TypeSizes return BOOL_SIZE; } +public static int sizeof(byte value) +{ +return BYTE_SIZE; +} + public static int sizeof(short value) { return SHORT_SIZE; - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Fix serialized size of DataLimits Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d2bc37f4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d2bc37f4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d2bc37f4 Branch: refs/heads/trunk Commit: d2bc37f43db14661a159406e421985a2484d5387 Parents: 9ee44db eb05025 Author: Sylvain LebresneAuthored: Sat Nov 18 14:17:43 2017 +0100 Committer: Sylvain Lebresne Committed: Sat Nov 18 14:17:43 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/TypeSizes.java | 6 ++ 2 files changed, 7 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2bc37f4/CHANGES.txt -- diff --cc CHANGES.txt index a1a1a37,6c50a3f..3fc934e --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,9 -1,5 +1,10 @@@ -3.0.16 +3.11.2 + * Add asm jar to build.xml for maven builds (CASSANDRA-11193) + * Round buffer size to powers of 2 for the chunk cache (CASSANDRA-13897) + * Update jackson JSON jars (CASSANDRA-13949) + * Avoid locks when checking LCS fanout and if we should defrag (CASSANDRA-13930) +Merged from 3.0: + * Fix serialized size of DataLimits (CASSANDRA-14057) * Add flag to allow dropping oversized read repair mutations (CASSANDRA-13975) * Fix SSTableLoader logger message (CASSANDRA-14003) * Fix repair race that caused gossip to block (CASSANDRA-13849) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Fix serialized size of DataLimits Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/da410153 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/da410153 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/da410153 Branch: refs/heads/trunk Commit: da410153ed250e03080fd48cd0f57baee481412d Parents: f1f6ed6 d2bc37f Author: Sylvain LebresneAuthored: Sat Nov 18 14:17:58 2017 +0100 Committer: Sylvain Lebresne Committed: Sat Nov 18 14:17:58 2017 +0100 -- CHANGES.txt | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/da410153/CHANGES.txt -- - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[3/6] cassandra git commit: Fix serialized size of DataLimits
Fix serialized size of DataLimits patch by Sylvain Lebresne; reviewed by Jason Brown for CASSANDRA-14057 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eb05025c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eb05025c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eb05025c Branch: refs/heads/trunk Commit: eb05025c0a768241ea61fd86db9a88cfd8f6e93e Parents: f1e850a Author: Sylvain LebresneAuthored: Fri Nov 17 15:46:58 2017 +0100 Committer: Sylvain Lebresne Committed: Sat Nov 18 14:16:42 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/TypeSizes.java | 6 ++ 2 files changed, 7 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb05025c/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index a3c43fd..6c50a3f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.16 + * Fix serialized size of DataLimits (CASSANDRA-14057) * Add flag to allow dropping oversized read repair mutations (CASSANDRA-13975) * Fix SSTableLoader logger message (CASSANDRA-14003) * Fix repair race that caused gossip to block (CASSANDRA-13849) http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb05025c/src/java/org/apache/cassandra/db/TypeSizes.java -- diff --git a/src/java/org/apache/cassandra/db/TypeSizes.java b/src/java/org/apache/cassandra/db/TypeSizes.java index 6543025..b47e300 100644 --- a/src/java/org/apache/cassandra/db/TypeSizes.java +++ b/src/java/org/apache/cassandra/db/TypeSizes.java @@ -28,6 +28,7 @@ public final class TypeSizes private TypeSizes(){} private static final int BOOL_SIZE = 1; +private static final int BYTE_SIZE = 1; private static final int SHORT_SIZE = 2; private static final int INT_SIZE = 4; private static final int LONG_SIZE = 8; @@ -78,6 +79,11 @@ public final class TypeSizes return BOOL_SIZE; } +public static int sizeof(byte value) +{ +return BYTE_SIZE; +} + public static int sizeof(short value) { return SHORT_SIZE; - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Fix serialized size of DataLimits Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d2bc37f4 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d2bc37f4 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d2bc37f4 Branch: refs/heads/cassandra-3.11 Commit: d2bc37f43db14661a159406e421985a2484d5387 Parents: 9ee44db eb05025 Author: Sylvain LebresneAuthored: Sat Nov 18 14:17:43 2017 +0100 Committer: Sylvain Lebresne Committed: Sat Nov 18 14:17:43 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/TypeSizes.java | 6 ++ 2 files changed, 7 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d2bc37f4/CHANGES.txt -- diff --cc CHANGES.txt index a1a1a37,6c50a3f..3fc934e --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,9 -1,5 +1,10 @@@ -3.0.16 +3.11.2 + * Add asm jar to build.xml for maven builds (CASSANDRA-11193) + * Round buffer size to powers of 2 for the chunk cache (CASSANDRA-13897) + * Update jackson JSON jars (CASSANDRA-13949) + * Avoid locks when checking LCS fanout and if we should defrag (CASSANDRA-13930) +Merged from 3.0: + * Fix serialized size of DataLimits (CASSANDRA-14057) * Add flag to allow dropping oversized read repair mutations (CASSANDRA-13975) * Fix SSTableLoader logger message (CASSANDRA-14003) * Fix repair race that caused gossip to block (CASSANDRA-13849) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[1/6] cassandra git commit: Fix serialized size of DataLimits
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 f1e850a49 -> eb05025c0 refs/heads/cassandra-3.11 9ee44db49 -> d2bc37f43 refs/heads/trunk f1f6ed609 -> da410153e Fix serialized size of DataLimits patch by Sylvain Lebresne; reviewed by Jason Brown for CASSANDRA-14057 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/eb05025c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/eb05025c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/eb05025c Branch: refs/heads/cassandra-3.0 Commit: eb05025c0a768241ea61fd86db9a88cfd8f6e93e Parents: f1e850a Author: Sylvain LebresneAuthored: Fri Nov 17 15:46:58 2017 +0100 Committer: Sylvain Lebresne Committed: Sat Nov 18 14:16:42 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/TypeSizes.java | 6 ++ 2 files changed, 7 insertions(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb05025c/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index a3c43fd..6c50a3f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.16 + * Fix serialized size of DataLimits (CASSANDRA-14057) * Add flag to allow dropping oversized read repair mutations (CASSANDRA-13975) * Fix SSTableLoader logger message (CASSANDRA-14003) * Fix repair race that caused gossip to block (CASSANDRA-13849) http://git-wip-us.apache.org/repos/asf/cassandra/blob/eb05025c/src/java/org/apache/cassandra/db/TypeSizes.java -- diff --git a/src/java/org/apache/cassandra/db/TypeSizes.java b/src/java/org/apache/cassandra/db/TypeSizes.java index 6543025..b47e300 100644 --- a/src/java/org/apache/cassandra/db/TypeSizes.java +++ b/src/java/org/apache/cassandra/db/TypeSizes.java @@ -28,6 +28,7 @@ public final class TypeSizes private TypeSizes(){} private static final int BOOL_SIZE = 1; +private static final int BYTE_SIZE = 1; private static final int SHORT_SIZE = 2; private static final int INT_SIZE = 4; private static final int LONG_SIZE = 8; @@ -78,6 +79,11 @@ public final class TypeSizes return BOOL_SIZE; } +public static int sizeof(byte value) +{ +return BYTE_SIZE; +} + public static int sizeof(short value) { return SHORT_SIZE; - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[04/12] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Fix handling of cells for removed column when reading legacy sstables Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/15276844 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/15276844 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/15276844 Branch: refs/heads/cassandra-3.11 Commit: 1527684462f903be6481324e401dc018da7e0e39 Parents: 710657d 5378ba2 Author: Sylvain LebresneAuthored: Fri Oct 6 16:16:25 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:16:25 2017 +0200 -- .../org/apache/cassandra/db/LegacyLayout.java | 70 +--- .../cassandra/db/UnfilteredDeserializer.java| 29 +--- 2 files changed, 67 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/15276844/src/java/org/apache/cassandra/db/LegacyLayout.java -- diff --cc src/java/org/apache/cassandra/db/LegacyLayout.java index 77aa59a,3ba96a6..9679a32 --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@@ -1021,29 -1037,36 +1038,36 @@@ public abstract class LegacyLayou }; } - public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) throws IOException + public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) + throws IOException, UnknownColumnException { - while (true) - { - ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); - if (!cellname.hasRemaining()) - return null; // END_OF_ROW + ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); + if (!cellname.hasRemaining()) + return null; // END_OF_ROW - try - { - int b = in.readUnsignedByte(); - return (b & RANGE_TOMBSTONE_MASK) != 0 - ? readLegacyRangeTombstoneBody(metadata, in, cellname) - : readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); - } - catch (UnknownColumnException e) - { - // We can get there if we read a cell for a dropped column, and ff that is the case, - // then simply ignore the cell is fine. But also not that we ignore if it's the - // system keyspace because for those table we actually remove columns without registering - // them in the dropped columns - assert metadata.ksName.equals(SchemaConstants.SYSTEM_KEYSPACE_NAME) || metadata.getDroppedColumnDefinition(e.columnName) != null : e.getMessage(); - } + try + { + int b = in.readUnsignedByte(); + return (b & RANGE_TOMBSTONE_MASK) != 0 +? readLegacyRangeTombstoneBody(metadata, in, cellname) +: readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); + } + catch (UnknownColumnException e) + { + // We legitimately can get here in 2 cases: + // 1) for system tables, because we've unceremoniously removed columns (without registering them as dropped) + // 2) for dropped columns. + // In any other case, there is a mismatch between the schema and the data, and we complain loudly in + // that case. Note that if we are in a legit case of an unknown column, we want to simply skip that cell, + // but we don't do this here and re-throw the exception because the calling code sometimes has to know + // about this happening. This does mean code calling this method should handle this case properly. -if (!metadata.ksName.equals(SystemKeyspace.NAME) && metadata.getDroppedColumnDefinition(e.columnName) == null) ++if (!metadata.ksName.equals(SchemaConstants.SYSTEM_KEYSPACE_NAME) && metadata.getDroppedColumnDefinition(e.columnName) == null) + throw new IllegalStateException(String.format("Got cell for unknown column %s in sstable of %s.%s: " + + "This suggest a problem with the schema which doesn't list " + + "this column. Even if that column was dropped, it should have " + + "been listed as such", metadata.ksName, metadata.cfName,
[06/12] cassandra git commit: Merge commit '1527684462f903be6481324e401dc018da7e0e39' into trunk
Merge commit '1527684462f903be6481324e401dc018da7e0e39' into trunk * commit '1527684462f903be6481324e401dc018da7e0e39': Fix handling of cells for removed column when reading legacy sstables Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9815c466 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9815c466 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9815c466 Branch: refs/heads/trunk Commit: 9815c46679ad14b038f0314a9b9611e099750724 Parents: cfee3e9 1527684 Author: Sylvain LebresneAuthored: Fri Oct 6 16:16:53 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:16:53 2017 +0200 -- -- - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[11/12] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Ninja-fix changelog Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3d09901b Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3d09901b Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3d09901b Branch: refs/heads/trunk Commit: 3d09901b4a0e67ce162283f85c34b1fe3c55dce3 Parents: 1527684 8a424ce Author: Sylvain LebresneAuthored: Fri Oct 6 16:18:36 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:18:36 2017 +0200 -- CHANGES.txt | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d09901b/CHANGES.txt -- diff --cc CHANGES.txt index e231bf2,6977be7..879397b --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,22 -1,8 +1,23 @@@ -3.0.16 +3.11.2 +Merged from 3.0: + * Mishandling of cells for removed/dropped columns when reading legacy files (CASSANDRA-13939) * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) -3.0.15 + +3.11.1 + * Fix the computation of cdc_total_space_in_mb for exabyte filesystems (CASSANDRA-13808) + * AbstractTokenTreeBuilder#serializedSize returns wrong value when there is a single leaf and overflow collisions (CASSANDRA-13869) + * Add a compaction option to TWCS to ignore sstables overlapping checks (CASSANDRA-13418) + * BTree.Builder memory leak (CASSANDRA-13754) + * Revert CASSANDRA-10368 of supporting non-pk column filtering due to correctness (CASSANDRA-13798) + * Add a skip read validation flag to cassandra-stress (CASSANDRA-13772) + * Fix cassandra-stress hang issues when an error during cluster connection happens (CASSANDRA-12938) + * Better bootstrap failure message when blocked by (potential) range movement (CASSANDRA-13744) + * "ignore" option is ignored in sstableloader (CASSANDRA-13721) + * Deadlock in AbstractCommitLogSegmentManager (CASSANDRA-13652) + * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) + * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) +Merged from 3.0: * Improve TRUNCATE performance (CASSANDRA-13909) * Implement short read protection on partition boundaries (CASSANDRA-13595) * Fix ISE thrown by UPI.Serializer.hasNext() for some SELECT queries (CASSANDRA-13911) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[12/12] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Ninja-fix changelog Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9663c009 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9663c009 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9663c009 Branch: refs/heads/trunk Commit: 9663c0093840a352faa08e3ffda6160745df75b8 Parents: 9815c46 3d09901 Author: Sylvain LebresneAuthored: Fri Oct 6 16:18:46 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:18:46 2017 +0200 -- CHANGES.txt | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9663c009/CHANGES.txt -- diff --cc CHANGES.txt index 90c6b9c,879397b..eeed794 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,155 -1,6 +1,156 @@@ +4.0 + * Checksum sstable metadata (CASSANDRA-13321) + * Expose recent histograms in JmxHistograms (CASSANDRA-13642) + * Fix buffer length comparison when decompressing in netty-based streaming (CASSANDRA-13899) + * Properly close StreamCompressionInputStream to release any ByteBuf (CASSANDRA-13906) + * Add SERIAL and LOCAL_SERIAL support for cassandra-stress (CASSANDRA-13925) + * LCS needlessly checks for L0 STCS candidates multiple times (CASSANDRA-12961) + * Correctly close netty channels when a stream session ends (CASSANDRA-13905) + * Update lz4 to 1.4.0 (CASSANDRA-13741) + * Optimize Paxos prepare and propose stage for local requests (CASSANDRA-13862) + * Throttle base partitions during MV repair streaming to prevent OOM (CASSANDRA-13299) + * Use compaction threshold for STCS in L0 (CASSANDRA-13861) + * Fix problem with min_compress_ratio: 1 and disallow ratio < 1 (CASSANDRA-13703) + * Add extra information to SASI timeout exception (CASSANDRA-13677) + * Add incremental repair support for --hosts, --force, and subrange repair (CASSANDRA-13818) + * Rework CompactionStrategyManager.getScanners synchronization (CASSANDRA-13786) + * Add additional unit tests for batch behavior, TTLs, Timestamps (CASSANDRA-13846) + * Add keyspace and table name in schema validation exception (CASSANDRA-13845) + * Emit metrics whenever we hit tombstone failures and warn thresholds (CASSANDRA-13771) + * Make netty EventLoopGroups daemon threads (CASSANDRA-13837) + * Race condition when closing stream sessions (CASSANDRA-13852) + * NettyFactoryTest is failing in trunk on macOS (CASSANDRA-13831) + * Allow changing log levels via nodetool for related classes (CASSANDRA-12696) + * Add stress profile yaml with LWT (CASSANDRA-7960) + * Reduce memory copies and object creations when acting on ByteBufs (CASSANDRA-13789) + * Simplify mx4j configuration (Cassandra-13578) + * Fix trigger example on 4.0 (CASSANDRA-13796) + * Force minumum timeout value (CASSANDRA-9375) + * Use netty for streaming (CASSANDRA-12229) + * Use netty for internode messaging (CASSANDRA-8457) + * Add bytes repaired/unrepaired to nodetool tablestats (CASSANDRA-13774) + * Don't delete incremental repair sessions if they still have sstables (CASSANDRA-13758) + * Fix pending repair manager index out of bounds check (CASSANDRA-13769) + * Don't use RangeFetchMapCalculator when RF=1 (CASSANDRA-13576) + * Don't optimise trivial ranges in RangeFetchMapCalculator (CASSANDRA-13664) + * Use an ExecutorService for repair commands instead of new Thread(..).start() (CASSANDRA-13594) + * Fix race / ref leak in anticompaction (CASSANDRA-13688) + * Expose tasks queue length via JMX (CASSANDRA-12758) + * Fix race / ref leak in PendingRepairManager (CASSANDRA-13751) + * Enable ppc64le runtime as unsupported architecture (CASSANDRA-13615) + * Improve sstablemetadata output (CASSANDRA-11483) + * Support for migrating legacy users to roles has been dropped (CASSANDRA-13371) + * Introduce error metrics for repair (CASSANDRA-13387) + * Refactoring to primitive functional interfaces in AuthCache (CASSANDRA-13732) + * Update metrics to 3.1.5 (CASSANDRA-13648) + * batch_size_warn_threshold_in_kb can now be set at runtime (CASSANDRA-13699) + * Avoid always rebuilding secondary indexes at startup (CASSANDRA-13725) + * Upgrade JMH from 1.13 to 1.19 (CASSANDRA-13727) + * Upgrade SLF4J from 1.7.7 to 1.7.25 (CASSANDRA-12996) + * Default for start_native_transport now true if not set in config (CASSANDRA-13656) + * Don't add localhost to the graph when calculating where to stream from (CASSANDRA-13583) + * Make CDC availability more deterministic via hard-linking (CASSANDRA-12148) + * Allow skipping equality-restricted clustering columns in ORDER BY clause (CASSANDRA-10271) + * Use common nowInSec for validation compactions (CASSANDRA-13671) + *
[07/12] cassandra git commit: Ninja-fix changelog
Ninja-fix changelog Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8a424cef Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8a424cef Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8a424cef Branch: refs/heads/cassandra-3.0 Commit: 8a424cef32270e75b3a4565793b2d436e6df181f Parents: 5378ba2 Author: Sylvain LebresneAuthored: Fri Oct 6 16:18:07 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:18:07 2017 +0200 -- CHANGES.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/8a424cef/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index df05f7f..6977be7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,6 @@ 3.0.16 - * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) - + * Mishandling of cells for removed/dropped columns when reading legacy files (CASSANDRA-13939) + * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) 3.0.15 * Improve TRUNCATE performance (CASSANDRA-13909) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[10/12] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Ninja-fix changelog Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3d09901b Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3d09901b Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3d09901b Branch: refs/heads/cassandra-3.11 Commit: 3d09901b4a0e67ce162283f85c34b1fe3c55dce3 Parents: 1527684 8a424ce Author: Sylvain LebresneAuthored: Fri Oct 6 16:18:36 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:18:36 2017 +0200 -- CHANGES.txt | 1 + 1 file changed, 1 insertion(+) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3d09901b/CHANGES.txt -- diff --cc CHANGES.txt index e231bf2,6977be7..879397b --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,22 -1,8 +1,23 @@@ -3.0.16 +3.11.2 +Merged from 3.0: + * Mishandling of cells for removed/dropped columns when reading legacy files (CASSANDRA-13939) * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) -3.0.15 + +3.11.1 + * Fix the computation of cdc_total_space_in_mb for exabyte filesystems (CASSANDRA-13808) + * AbstractTokenTreeBuilder#serializedSize returns wrong value when there is a single leaf and overflow collisions (CASSANDRA-13869) + * Add a compaction option to TWCS to ignore sstables overlapping checks (CASSANDRA-13418) + * BTree.Builder memory leak (CASSANDRA-13754) + * Revert CASSANDRA-10368 of supporting non-pk column filtering due to correctness (CASSANDRA-13798) + * Add a skip read validation flag to cassandra-stress (CASSANDRA-13772) + * Fix cassandra-stress hang issues when an error during cluster connection happens (CASSANDRA-12938) + * Better bootstrap failure message when blocked by (potential) range movement (CASSANDRA-13744) + * "ignore" option is ignored in sstableloader (CASSANDRA-13721) + * Deadlock in AbstractCommitLogSegmentManager (CASSANDRA-13652) + * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) + * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) +Merged from 3.0: * Improve TRUNCATE performance (CASSANDRA-13909) * Implement short read protection on partition boundaries (CASSANDRA-13595) * Fix ISE thrown by UPI.Serializer.hasNext() for some SELECT queries (CASSANDRA-13911) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[05/12] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Fix handling of cells for removed column when reading legacy sstables Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/15276844 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/15276844 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/15276844 Branch: refs/heads/trunk Commit: 1527684462f903be6481324e401dc018da7e0e39 Parents: 710657d 5378ba2 Author: Sylvain LebresneAuthored: Fri Oct 6 16:16:25 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:16:25 2017 +0200 -- .../org/apache/cassandra/db/LegacyLayout.java | 70 +--- .../cassandra/db/UnfilteredDeserializer.java| 29 +--- 2 files changed, 67 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/15276844/src/java/org/apache/cassandra/db/LegacyLayout.java -- diff --cc src/java/org/apache/cassandra/db/LegacyLayout.java index 77aa59a,3ba96a6..9679a32 --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@@ -1021,29 -1037,36 +1038,36 @@@ public abstract class LegacyLayou }; } - public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) throws IOException + public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) + throws IOException, UnknownColumnException { - while (true) - { - ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); - if (!cellname.hasRemaining()) - return null; // END_OF_ROW + ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); + if (!cellname.hasRemaining()) + return null; // END_OF_ROW - try - { - int b = in.readUnsignedByte(); - return (b & RANGE_TOMBSTONE_MASK) != 0 - ? readLegacyRangeTombstoneBody(metadata, in, cellname) - : readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); - } - catch (UnknownColumnException e) - { - // We can get there if we read a cell for a dropped column, and ff that is the case, - // then simply ignore the cell is fine. But also not that we ignore if it's the - // system keyspace because for those table we actually remove columns without registering - // them in the dropped columns - assert metadata.ksName.equals(SchemaConstants.SYSTEM_KEYSPACE_NAME) || metadata.getDroppedColumnDefinition(e.columnName) != null : e.getMessage(); - } + try + { + int b = in.readUnsignedByte(); + return (b & RANGE_TOMBSTONE_MASK) != 0 +? readLegacyRangeTombstoneBody(metadata, in, cellname) +: readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); + } + catch (UnknownColumnException e) + { + // We legitimately can get here in 2 cases: + // 1) for system tables, because we've unceremoniously removed columns (without registering them as dropped) + // 2) for dropped columns. + // In any other case, there is a mismatch between the schema and the data, and we complain loudly in + // that case. Note that if we are in a legit case of an unknown column, we want to simply skip that cell, + // but we don't do this here and re-throw the exception because the calling code sometimes has to know + // about this happening. This does mean code calling this method should handle this case properly. -if (!metadata.ksName.equals(SystemKeyspace.NAME) && metadata.getDroppedColumnDefinition(e.columnName) == null) ++if (!metadata.ksName.equals(SchemaConstants.SYSTEM_KEYSPACE_NAME) && metadata.getDroppedColumnDefinition(e.columnName) == null) + throw new IllegalStateException(String.format("Got cell for unknown column %s in sstable of %s.%s: " + + "This suggest a problem with the schema which doesn't list " + + "this column. Even if that column was dropped, it should have " + + "been listed as such", metadata.ksName, metadata.cfName,
[01/12] cassandra git commit: Fix handling of cells for removed column when reading legacy sstables
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 c07441251 -> 8a424cef3 refs/heads/cassandra-3.11 710657d82 -> 3d09901b4 refs/heads/trunk cfee3e93b -> 9663c0093 Fix handling of cells for removed column when reading legacy sstables Patch by Sylvain Lebresne; reviewed by Robert Stupp for CASSANDRA-13939 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5378ba27 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5378ba27 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5378ba27 Branch: refs/heads/cassandra-3.0 Commit: 5378ba27ff66b4f39e34d613f99b0f2eddf7990d Parents: c074412 Author: Sylvain LebresneAuthored: Thu Oct 5 10:30:56 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:12:56 2017 +0200 -- .../org/apache/cassandra/db/LegacyLayout.java | 70 +--- .../cassandra/db/UnfilteredDeserializer.java| 29 +--- 2 files changed, 67 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5378ba27/src/java/org/apache/cassandra/db/LegacyLayout.java -- diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java index 40b9fd3..3ba96a6 100644 --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@ -649,7 +649,7 @@ public abstract class LegacyLayout boolean foundOne = false; LegacyAtom atom; -while ((atom = readLegacyAtom(metadata, in, false)) != null) +while ((atom = readLegacyAtomSkippingUnknownColumn(metadata,in)) != null) { if (atom.isCell()) { @@ -672,6 +672,23 @@ public abstract class LegacyLayout return foundOne ? builder.build() : Rows.EMPTY_STATIC_ROW; } +private static LegacyAtom readLegacyAtomSkippingUnknownColumn(CFMetaData metadata, DataInputPlus in) +throws IOException +{ +while (true) +{ +try +{ +return readLegacyAtom(metadata, in, false); +} +catch (UnknownColumnException e) +{ +// Simply skip, as the method name implies. +} +} + +} + private static Row getNextRow(CellGrouper grouper, PeekingIterator cells) { if (!cells.hasNext()) @@ -1020,29 +1037,36 @@ public abstract class LegacyLayout }; } -public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) throws IOException +public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) +throws IOException, UnknownColumnException { -while (true) -{ -ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); -if (!cellname.hasRemaining()) -return null; // END_OF_ROW - -try -{ -int b = in.readUnsignedByte(); -return (b & RANGE_TOMBSTONE_MASK) != 0 -? readLegacyRangeTombstoneBody(metadata, in, cellname) -: readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); -} -catch (UnknownColumnException e) -{ -// We can get there if we read a cell for a dropped column, and ff that is the case, -// then simply ignore the cell is fine. But also not that we ignore if it's the -// system keyspace because for those table we actually remove columns without registering -// them in the dropped columns -assert metadata.ksName.equals(SystemKeyspace.NAME) || metadata.getDroppedColumnDefinition(e.columnName) != null : e.getMessage(); -} +ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); +if (!cellname.hasRemaining()) +return null; // END_OF_ROW + +try +{ +int b = in.readUnsignedByte(); +return (b & RANGE_TOMBSTONE_MASK) != 0 + ? readLegacyRangeTombstoneBody(metadata, in, cellname) + : readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); +} +catch (UnknownColumnException e) +{ +// We legitimately can get here in 2 cases: +// 1) for system tables, because we've unceremoniously removed columns (without registering them as dropped) +// 2) for dropped columns. +// In any other case, there is a mismatch
[03/12] cassandra git commit: Fix handling of cells for removed column when reading legacy sstables
Fix handling of cells for removed column when reading legacy sstables Patch by Sylvain Lebresne; reviewed by Robert Stupp for CASSANDRA-13939 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5378ba27 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5378ba27 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5378ba27 Branch: refs/heads/trunk Commit: 5378ba27ff66b4f39e34d613f99b0f2eddf7990d Parents: c074412 Author: Sylvain LebresneAuthored: Thu Oct 5 10:30:56 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:12:56 2017 +0200 -- .../org/apache/cassandra/db/LegacyLayout.java | 70 +--- .../cassandra/db/UnfilteredDeserializer.java| 29 +--- 2 files changed, 67 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5378ba27/src/java/org/apache/cassandra/db/LegacyLayout.java -- diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java index 40b9fd3..3ba96a6 100644 --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@ -649,7 +649,7 @@ public abstract class LegacyLayout boolean foundOne = false; LegacyAtom atom; -while ((atom = readLegacyAtom(metadata, in, false)) != null) +while ((atom = readLegacyAtomSkippingUnknownColumn(metadata,in)) != null) { if (atom.isCell()) { @@ -672,6 +672,23 @@ public abstract class LegacyLayout return foundOne ? builder.build() : Rows.EMPTY_STATIC_ROW; } +private static LegacyAtom readLegacyAtomSkippingUnknownColumn(CFMetaData metadata, DataInputPlus in) +throws IOException +{ +while (true) +{ +try +{ +return readLegacyAtom(metadata, in, false); +} +catch (UnknownColumnException e) +{ +// Simply skip, as the method name implies. +} +} + +} + private static Row getNextRow(CellGrouper grouper, PeekingIterator cells) { if (!cells.hasNext()) @@ -1020,29 +1037,36 @@ public abstract class LegacyLayout }; } -public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) throws IOException +public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) +throws IOException, UnknownColumnException { -while (true) -{ -ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); -if (!cellname.hasRemaining()) -return null; // END_OF_ROW - -try -{ -int b = in.readUnsignedByte(); -return (b & RANGE_TOMBSTONE_MASK) != 0 -? readLegacyRangeTombstoneBody(metadata, in, cellname) -: readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); -} -catch (UnknownColumnException e) -{ -// We can get there if we read a cell for a dropped column, and ff that is the case, -// then simply ignore the cell is fine. But also not that we ignore if it's the -// system keyspace because for those table we actually remove columns without registering -// them in the dropped columns -assert metadata.ksName.equals(SystemKeyspace.NAME) || metadata.getDroppedColumnDefinition(e.columnName) != null : e.getMessage(); -} +ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); +if (!cellname.hasRemaining()) +return null; // END_OF_ROW + +try +{ +int b = in.readUnsignedByte(); +return (b & RANGE_TOMBSTONE_MASK) != 0 + ? readLegacyRangeTombstoneBody(metadata, in, cellname) + : readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); +} +catch (UnknownColumnException e) +{ +// We legitimately can get here in 2 cases: +// 1) for system tables, because we've unceremoniously removed columns (without registering them as dropped) +// 2) for dropped columns. +// In any other case, there is a mismatch between the schema and the data, and we complain loudly in +// that case. Note that if we are in a legit case of an unknown column, we want to simply skip that cell, +// but
[08/12] cassandra git commit: Ninja-fix changelog
Ninja-fix changelog Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8a424cef Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8a424cef Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8a424cef Branch: refs/heads/trunk Commit: 8a424cef32270e75b3a4565793b2d436e6df181f Parents: 5378ba2 Author: Sylvain LebresneAuthored: Fri Oct 6 16:18:07 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:18:07 2017 +0200 -- CHANGES.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/8a424cef/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index df05f7f..6977be7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,6 @@ 3.0.16 - * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) - + * Mishandling of cells for removed/dropped columns when reading legacy files (CASSANDRA-13939) + * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) 3.0.15 * Improve TRUNCATE performance (CASSANDRA-13909) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[02/12] cassandra git commit: Fix handling of cells for removed column when reading legacy sstables
Fix handling of cells for removed column when reading legacy sstables Patch by Sylvain Lebresne; reviewed by Robert Stupp for CASSANDRA-13939 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5378ba27 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5378ba27 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5378ba27 Branch: refs/heads/cassandra-3.11 Commit: 5378ba27ff66b4f39e34d613f99b0f2eddf7990d Parents: c074412 Author: Sylvain LebresneAuthored: Thu Oct 5 10:30:56 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:12:56 2017 +0200 -- .../org/apache/cassandra/db/LegacyLayout.java | 70 +--- .../cassandra/db/UnfilteredDeserializer.java| 29 +--- 2 files changed, 67 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5378ba27/src/java/org/apache/cassandra/db/LegacyLayout.java -- diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java index 40b9fd3..3ba96a6 100644 --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@ -649,7 +649,7 @@ public abstract class LegacyLayout boolean foundOne = false; LegacyAtom atom; -while ((atom = readLegacyAtom(metadata, in, false)) != null) +while ((atom = readLegacyAtomSkippingUnknownColumn(metadata,in)) != null) { if (atom.isCell()) { @@ -672,6 +672,23 @@ public abstract class LegacyLayout return foundOne ? builder.build() : Rows.EMPTY_STATIC_ROW; } +private static LegacyAtom readLegacyAtomSkippingUnknownColumn(CFMetaData metadata, DataInputPlus in) +throws IOException +{ +while (true) +{ +try +{ +return readLegacyAtom(metadata, in, false); +} +catch (UnknownColumnException e) +{ +// Simply skip, as the method name implies. +} +} + +} + private static Row getNextRow(CellGrouper grouper, PeekingIterator cells) { if (!cells.hasNext()) @@ -1020,29 +1037,36 @@ public abstract class LegacyLayout }; } -public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) throws IOException +public static LegacyAtom readLegacyAtom(CFMetaData metadata, DataInputPlus in, boolean readAllAsDynamic) +throws IOException, UnknownColumnException { -while (true) -{ -ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); -if (!cellname.hasRemaining()) -return null; // END_OF_ROW - -try -{ -int b = in.readUnsignedByte(); -return (b & RANGE_TOMBSTONE_MASK) != 0 -? readLegacyRangeTombstoneBody(metadata, in, cellname) -: readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); -} -catch (UnknownColumnException e) -{ -// We can get there if we read a cell for a dropped column, and ff that is the case, -// then simply ignore the cell is fine. But also not that we ignore if it's the -// system keyspace because for those table we actually remove columns without registering -// them in the dropped columns -assert metadata.ksName.equals(SystemKeyspace.NAME) || metadata.getDroppedColumnDefinition(e.columnName) != null : e.getMessage(); -} +ByteBuffer cellname = ByteBufferUtil.readWithShortLength(in); +if (!cellname.hasRemaining()) +return null; // END_OF_ROW + +try +{ +int b = in.readUnsignedByte(); +return (b & RANGE_TOMBSTONE_MASK) != 0 + ? readLegacyRangeTombstoneBody(metadata, in, cellname) + : readLegacyCellBody(metadata, in, cellname, b, SerializationHelper.Flag.LOCAL, readAllAsDynamic); +} +catch (UnknownColumnException e) +{ +// We legitimately can get here in 2 cases: +// 1) for system tables, because we've unceremoniously removed columns (without registering them as dropped) +// 2) for dropped columns. +// In any other case, there is a mismatch between the schema and the data, and we complain loudly in +// that case. Note that if we are in a legit case of an unknown column, we want to simply skip that cell, +
[09/12] cassandra git commit: Ninja-fix changelog
Ninja-fix changelog Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8a424cef Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8a424cef Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8a424cef Branch: refs/heads/cassandra-3.11 Commit: 8a424cef32270e75b3a4565793b2d436e6df181f Parents: 5378ba2 Author: Sylvain LebresneAuthored: Fri Oct 6 16:18:07 2017 +0200 Committer: Sylvain Lebresne Committed: Fri Oct 6 16:18:07 2017 +0200 -- CHANGES.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/8a424cef/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index df05f7f..6977be7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,6 @@ 3.0.16 - * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) - + * Mishandling of cells for removed/dropped columns when reading legacy files (CASSANDRA-13939) + * Deserialise sstable metadata in nodetool verify (CASSANDRA-13922) 3.0.15 * Improve TRUNCATE performance (CASSANDRA-13909) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[1/6] cassandra git commit: Fix sstable reader to support range-tombstone-marker for multi-slices
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 35e32f20b -> 975c3d81b refs/heads/cassandra-3.11 594f1c1df -> 66115139a refs/heads/trunk eb7669215 -> 9a6247482 Fix sstable reader to support range-tombstone-marker for multi-slices patch by Zhao Yang; reviewed by Sylvain Lebresne for CASSANDRA-13787 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/975c3d81 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/975c3d81 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/975c3d81 Branch: refs/heads/cassandra-3.0 Commit: 975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa Parents: 35e32f2 Author: Zhao YangAuthored: Wed Aug 23 16:15:25 2017 +0800 Committer: Sylvain Lebresne Committed: Wed Sep 20 15:09:49 2017 +0200 -- CHANGES.txt | 1 + .../columniterator/AbstractSSTableIterator.java | 7 - .../db/columniterator/SSTableIterator.java | 8 +- .../columniterator/SSTableReversedIterator.java | 2 +- .../org/apache/cassandra/cql3/ViewTest.java | 49 +++ .../db/SinglePartitionSliceCommandTest.java | 145 ++- 6 files changed, 197 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 74e70e1..2d11a3e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * Fix sstable reader to support range-tombstone-marker for multi-slices (CASSANDRA-13787) * Fix short read protection for tables with no clustering columns (CASSANDRA-13880) * Make isBuilt volatile in PartitionUpdate (CASSANDRA-13619) * Prevent integer overflow of timestamps in CellTest and RowsTest (CASSANDRA-13866) http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java index c61b6aa..f9e6545 100644 --- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java @@ -329,13 +329,6 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator openMarker = marker.isOpen(false) ? marker.openDeletionTime(false) : null; } -protected DeletionTime getAndClearOpenMarker() -{ -DeletionTime toReturn = openMarker; -openMarker = null; -return toReturn; -} - public boolean hasNext() { try http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index ff91871..47f85ac 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -173,14 +173,14 @@ public class SSTableIterator extends AbstractSSTableIterator if (next != null) return true; -// If we have an open marker, we should close it before finishing +// for current slice, no data read from deserialization +sliceDone = true; +// If we have an open marker, we should not close it, there could be more slices if (openMarker != null) { -next = new RangeTombstoneBoundMarker(end, getAndClearOpenMarker()); +next = new RangeTombstoneBoundMarker(end, openMarker); return true; } - -sliceDone = true; // not absolutely necessary but accurate and cheap return false; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java index b12ed67..76d8c4d 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java +++
[3/6] cassandra git commit: Fix sstable reader to support range-tombstone-marker for multi-slices
Fix sstable reader to support range-tombstone-marker for multi-slices patch by Zhao Yang; reviewed by Sylvain Lebresne for CASSANDRA-13787 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/975c3d81 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/975c3d81 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/975c3d81 Branch: refs/heads/trunk Commit: 975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa Parents: 35e32f2 Author: Zhao YangAuthored: Wed Aug 23 16:15:25 2017 +0800 Committer: Sylvain Lebresne Committed: Wed Sep 20 15:09:49 2017 +0200 -- CHANGES.txt | 1 + .../columniterator/AbstractSSTableIterator.java | 7 - .../db/columniterator/SSTableIterator.java | 8 +- .../columniterator/SSTableReversedIterator.java | 2 +- .../org/apache/cassandra/cql3/ViewTest.java | 49 +++ .../db/SinglePartitionSliceCommandTest.java | 145 ++- 6 files changed, 197 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 74e70e1..2d11a3e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * Fix sstable reader to support range-tombstone-marker for multi-slices (CASSANDRA-13787) * Fix short read protection for tables with no clustering columns (CASSANDRA-13880) * Make isBuilt volatile in PartitionUpdate (CASSANDRA-13619) * Prevent integer overflow of timestamps in CellTest and RowsTest (CASSANDRA-13866) http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java index c61b6aa..f9e6545 100644 --- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java @@ -329,13 +329,6 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator openMarker = marker.isOpen(false) ? marker.openDeletionTime(false) : null; } -protected DeletionTime getAndClearOpenMarker() -{ -DeletionTime toReturn = openMarker; -openMarker = null; -return toReturn; -} - public boolean hasNext() { try http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index ff91871..47f85ac 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -173,14 +173,14 @@ public class SSTableIterator extends AbstractSSTableIterator if (next != null) return true; -// If we have an open marker, we should close it before finishing +// for current slice, no data read from deserialization +sliceDone = true; +// If we have an open marker, we should not close it, there could be more slices if (openMarker != null) { -next = new RangeTombstoneBoundMarker(end, getAndClearOpenMarker()); +next = new RangeTombstoneBoundMarker(end, openMarker); return true; } - -sliceDone = true; // not absolutely necessary but accurate and cheap return false; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java index b12ed67..76d8c4d 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java @@ -240,7 +240,7 @@ public class SSTableReversedIterator extends AbstractSSTableIterator // skipFirstIteratedItem (this is the last item of the block, but
[5/6] cassandra git commit: Merge commit '975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa' into cassandra-3.11
Merge commit '975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa' into cassandra-3.11 * commit '975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa': Fix sstable reader to support range-tombstone-marker for multi-slices Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/66115139 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/66115139 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/66115139 Branch: refs/heads/cassandra-3.11 Commit: 66115139addfb2bb6e26fa85e4225a1178d2e99c Parents: 594f1c1 975c3d8 Author: Sylvain LebresneAuthored: Wed Sep 20 15:11:58 2017 +0200 Committer: Sylvain Lebresne Committed: Wed Sep 20 15:12:40 2017 +0200 -- CHANGES.txt | 1 + .../columniterator/AbstractSSTableIterator.java | 7 - .../db/columniterator/SSTableIterator.java | 8 +- .../columniterator/SSTableReversedIterator.java | 2 +- .../org/apache/cassandra/cql3/ViewTest.java | 49 +++ .../db/SinglePartitionSliceCommandTest.java | 145 ++- 6 files changed, 197 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/CHANGES.txt -- diff --cc CHANGES.txt index 01955f6,2d11a3e..39270e5 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,15 -1,5 +1,16 @@@ -3.0.15 +3.11.1 + * AbstractTokenTreeBuilder#serializedSize returns wrong value when there is a single leaf and overflow collisions (CASSANDRA-13869) + * Add a compaction option to TWCS to ignore sstables overlapping checks (CASSANDRA-13418) + * BTree.Builder memory leak (CASSANDRA-13754) + * Revert CASSANDRA-10368 of supporting non-pk column filtering due to correctness (CASSANDRA-13798) + * Fix cassandra-stress hang issues when an error during cluster connection happens (CASSANDRA-12938) + * Better bootstrap failure message when blocked by (potential) range movement (CASSANDRA-13744) + * "ignore" option is ignored in sstableloader (CASSANDRA-13721) + * Deadlock in AbstractCommitLogSegmentManager (CASSANDRA-13652) + * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) + * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) +Merged from 3.0: + * Fix sstable reader to support range-tombstone-marker for multi-slices (CASSANDRA-13787) * Fix short read protection for tables with no clustering columns (CASSANDRA-13880) * Make isBuilt volatile in PartitionUpdate (CASSANDRA-13619) * Prevent integer overflow of timestamps in CellTest and RowsTest (CASSANDRA-13866) http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java -- diff --cc src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java index b6c60fe,f9e6545..c15416f --- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java @@@ -371,14 -329,7 +371,7 @@@ public abstract class AbstractSSTableIt openMarker = marker.isOpen(false) ? marker.openDeletionTime(false) : null; } - protected DeletionTime getAndClearOpenMarker() - { - DeletionTime toReturn = openMarker; - openMarker = null; - return toReturn; - } - -public boolean hasNext() +public boolean hasNext() { try { http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- diff --cc src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java index 88d415b,76d8c4d..cf8798d --- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java @@@ -249,8 -239,8 +249,8 @@@ public class SSTableReversedIterator ex // not breaking ImmutableBTreePartition, we should skip it when returning from the iterator, hence the // skipFirstIteratedItem (this is the last item of the block, but we're iterating in reverse order so it will // be the first returned by the iterator). -RangeTombstone.Bound markerEnd = end == null ?
[6/6] cassandra git commit: Merge commit '66115139addfb2bb6e26fa85e4225a1178d2e99c' into trunk
Merge commit '66115139addfb2bb6e26fa85e4225a1178d2e99c' into trunk * commit '66115139addfb2bb6e26fa85e4225a1178d2e99c': Fix sstable reader to support range-tombstone-marker for multi-slices Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9a624748 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9a624748 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9a624748 Branch: refs/heads/trunk Commit: 9a62474822149bca358d7535e6dd7210ca17277e Parents: eb76692 6611513 Author: Sylvain LebresneAuthored: Wed Sep 20 15:16:53 2017 +0200 Committer: Sylvain Lebresne Committed: Wed Sep 20 15:17:32 2017 +0200 -- CHANGES.txt | 1 + .../columniterator/AbstractSSTableIterator.java | 7 - .../db/columniterator/SSTableIterator.java | 8 +- .../columniterator/SSTableReversedIterator.java | 2 +- .../org/apache/cassandra/cql3/ViewTest.java | 49 +++ .../db/SinglePartitionSliceCommandTest.java | 143 ++- 6 files changed, 195 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a624748/CHANGES.txt -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a624748/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a624748/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a624748/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a624748/test/unit/org/apache/cassandra/cql3/ViewTest.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9a624748/test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java -- diff --cc test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java index f79066b,7ad6198..d03d3bc --- a/test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java +++ b/test/unit/org/apache/cassandra/db/SinglePartitionSliceCommandTest.java @@@ -20,9 -20,12 +20,10 @@@ */ package org.apache.cassandra.db; + import static org.junit.Assert.*; + import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Collections; import java.util.Iterator; - import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; @@@ -30,14 -33,17 +31,17 @@@ import org.junit.Test import org.slf4j.Logger; import org.slf4j.LoggerFactory; - import org.apache.cassandra.SchemaLoader; -import org.apache.cassandra.Util; -import org.apache.cassandra.config.CFMetaData; -import org.apache.cassandra.config.ColumnDefinition; +import org.apache.cassandra.schema.ColumnMetadata; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.config.DatabaseDescriptor; -import org.apache.cassandra.config.Schema; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.cql3.ColumnIdentifier; ++import org.apache.cassandra.Util; import org.apache.cassandra.cql3.QueryProcessor; + import org.apache.cassandra.cql3.UntypedResultSet; + import org.apache.cassandra.db.filter.AbstractClusteringIndexFilter; + import org.apache.cassandra.db.filter.ClusteringIndexNamesFilter; import org.apache.cassandra.db.filter.ClusteringIndexSliceFilter; import org.apache.cassandra.db.filter.ColumnFilter; import org.apache.cassandra.db.filter.DataLimits; @@@ -64,33 -74,221 +72,162 @@@ public class SinglePartitionSliceComman private static final String KEYSPACE = "ks"; private static final String TABLE = "tbl"; -private static CFMetaData cfm; -private static ColumnDefinition v; -private static ColumnDefinition s; +private static TableMetadata metadata; +private static ColumnMetadata v; +private static ColumnMetadata s; + private static final String TABLE_SCLICES = "tbl_slices"; -private static CFMetaData CFM_SLICES; ++private static TableMetadata CFM_SLICES; + @BeforeClass public static void defineSchema() throws ConfigurationException { DatabaseDescriptor.daemonInitialization(); -cfm = CFMetaData.Builder.create(KEYSPACE, TABLE) -.addPartitionKey("k", UTF8Type.instance) -
[4/6] cassandra git commit: Merge commit '975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa' into cassandra-3.11
Merge commit '975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa' into cassandra-3.11 * commit '975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa': Fix sstable reader to support range-tombstone-marker for multi-slices Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/66115139 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/66115139 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/66115139 Branch: refs/heads/trunk Commit: 66115139addfb2bb6e26fa85e4225a1178d2e99c Parents: 594f1c1 975c3d8 Author: Sylvain LebresneAuthored: Wed Sep 20 15:11:58 2017 +0200 Committer: Sylvain Lebresne Committed: Wed Sep 20 15:12:40 2017 +0200 -- CHANGES.txt | 1 + .../columniterator/AbstractSSTableIterator.java | 7 - .../db/columniterator/SSTableIterator.java | 8 +- .../columniterator/SSTableReversedIterator.java | 2 +- .../org/apache/cassandra/cql3/ViewTest.java | 49 +++ .../db/SinglePartitionSliceCommandTest.java | 145 ++- 6 files changed, 197 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/CHANGES.txt -- diff --cc CHANGES.txt index 01955f6,2d11a3e..39270e5 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,15 -1,5 +1,16 @@@ -3.0.15 +3.11.1 + * AbstractTokenTreeBuilder#serializedSize returns wrong value when there is a single leaf and overflow collisions (CASSANDRA-13869) + * Add a compaction option to TWCS to ignore sstables overlapping checks (CASSANDRA-13418) + * BTree.Builder memory leak (CASSANDRA-13754) + * Revert CASSANDRA-10368 of supporting non-pk column filtering due to correctness (CASSANDRA-13798) + * Fix cassandra-stress hang issues when an error during cluster connection happens (CASSANDRA-12938) + * Better bootstrap failure message when blocked by (potential) range movement (CASSANDRA-13744) + * "ignore" option is ignored in sstableloader (CASSANDRA-13721) + * Deadlock in AbstractCommitLogSegmentManager (CASSANDRA-13652) + * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) + * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) +Merged from 3.0: + * Fix sstable reader to support range-tombstone-marker for multi-slices (CASSANDRA-13787) * Fix short read protection for tables with no clustering columns (CASSANDRA-13880) * Make isBuilt volatile in PartitionUpdate (CASSANDRA-13619) * Prevent integer overflow of timestamps in CellTest and RowsTest (CASSANDRA-13866) http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java -- diff --cc src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java index b6c60fe,f9e6545..c15416f --- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java @@@ -371,14 -329,7 +371,7 @@@ public abstract class AbstractSSTableIt openMarker = marker.isOpen(false) ? marker.openDeletionTime(false) : null; } - protected DeletionTime getAndClearOpenMarker() - { - DeletionTime toReturn = openMarker; - openMarker = null; - return toReturn; - } - -public boolean hasNext() +public boolean hasNext() { try { http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/66115139/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- diff --cc src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java index 88d415b,76d8c4d..cf8798d --- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java @@@ -249,8 -239,8 +249,8 @@@ public class SSTableReversedIterator ex // not breaking ImmutableBTreePartition, we should skip it when returning from the iterator, hence the // skipFirstIteratedItem (this is the last item of the block, but we're iterating in reverse order so it will // be the first returned by the iterator). -RangeTombstone.Bound markerEnd = end == null ?
[2/6] cassandra git commit: Fix sstable reader to support range-tombstone-marker for multi-slices
Fix sstable reader to support range-tombstone-marker for multi-slices patch by Zhao Yang; reviewed by Sylvain Lebresne for CASSANDRA-13787 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/975c3d81 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/975c3d81 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/975c3d81 Branch: refs/heads/cassandra-3.11 Commit: 975c3d81b67e9c1e1dcefdda3f90e8edf6be5efa Parents: 35e32f2 Author: Zhao YangAuthored: Wed Aug 23 16:15:25 2017 +0800 Committer: Sylvain Lebresne Committed: Wed Sep 20 15:09:49 2017 +0200 -- CHANGES.txt | 1 + .../columniterator/AbstractSSTableIterator.java | 7 - .../db/columniterator/SSTableIterator.java | 8 +- .../columniterator/SSTableReversedIterator.java | 2 +- .../org/apache/cassandra/cql3/ViewTest.java | 49 +++ .../db/SinglePartitionSliceCommandTest.java | 145 ++- 6 files changed, 197 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 74e70e1..2d11a3e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * Fix sstable reader to support range-tombstone-marker for multi-slices (CASSANDRA-13787) * Fix short read protection for tables with no clustering columns (CASSANDRA-13880) * Make isBuilt volatile in PartitionUpdate (CASSANDRA-13619) * Prevent integer overflow of timestamps in CellTest and RowsTest (CASSANDRA-13866) http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java index c61b6aa..f9e6545 100644 --- a/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/AbstractSSTableIterator.java @@ -329,13 +329,6 @@ abstract class AbstractSSTableIterator implements SliceableUnfilteredRowIterator openMarker = marker.isOpen(false) ? marker.openDeletionTime(false) : null; } -protected DeletionTime getAndClearOpenMarker() -{ -DeletionTime toReturn = openMarker; -openMarker = null; -return toReturn; -} - public boolean hasNext() { try http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index ff91871..47f85ac 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -173,14 +173,14 @@ public class SSTableIterator extends AbstractSSTableIterator if (next != null) return true; -// If we have an open marker, we should close it before finishing +// for current slice, no data read from deserialization +sliceDone = true; +// If we have an open marker, we should not close it, there could be more slices if (openMarker != null) { -next = new RangeTombstoneBoundMarker(end, getAndClearOpenMarker()); +next = new RangeTombstoneBoundMarker(end, openMarker); return true; } - -sliceDone = true; // not absolutely necessary but accurate and cheap return false; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/975c3d81/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java index b12ed67..76d8c4d 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java @@ -240,7 +240,7 @@ public class SSTableReversedIterator extends AbstractSSTableIterator // skipFirstIteratedItem (this is the last item of the
[2/6] cassandra git commit: Potential AssertionError during ReadRepair of range tombstone and partition deletions
Potential AssertionError during ReadRepair of range tombstone and partition deletions patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13719 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5e57dd14 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5e57dd14 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5e57dd14 Branch: refs/heads/cassandra-3.11 Commit: 5e57dd14eb37adf06d2105227e0105d871ea6f76 Parents: 6a1b1f2 Author: Sylvain LebresneAuthored: Fri Jul 21 16:58:53 2017 +0200 Committer: Sylvain Lebresne Committed: Thu Aug 24 11:28:57 2017 +0200 -- CHANGES.txt | 1 + .../org/apache/cassandra/db/ReadResponse.java | 22 + .../db/partitions/AbstractBTreePartition.java | 14 +-- .../db/partitions/PartitionUpdate.java | 9 ++ .../apache/cassandra/service/DataResolver.java | 70 +-- .../cassandra/service/DataResolverTest.java | 91 +++- 6 files changed, 192 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 97dda05..2b49bc3 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * Potential AssertionError during ReadRepair of range tombstone and partition deletions (CASSANDRA-13719) * Don't let stress write warmup data if n=0 (CASSANDRA-13773) * Gossip thread slows down when using batch commit log (CASSANDRA-12966) * Randomize batchlog endpoint selection with only 1 or 2 racks (CASSANDRA-12884) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/src/java/org/apache/cassandra/db/ReadResponse.java -- diff --git a/src/java/org/apache/cassandra/db/ReadResponse.java b/src/java/org/apache/cassandra/db/ReadResponse.java index 693b52b..c59d00a 100644 --- a/src/java/org/apache/cassandra/db/ReadResponse.java +++ b/src/java/org/apache/cassandra/db/ReadResponse.java @@ -92,6 +92,28 @@ public abstract class ReadResponse public abstract boolean isDigestResponse(); +/** + * Creates a string of the requested partition in this read response suitable for debugging. + */ +public String toDebugString(ReadCommand command, DecoratedKey key) +{ +if (isDigestResponse()) +return "Digest:0x" + ByteBufferUtil.bytesToHex(digest(command)); + +try (UnfilteredPartitionIterator iter = makeIterator(command)) +{ +while (iter.hasNext()) +{ +try (UnfilteredRowIterator partition = iter.next()) +{ +if (partition.partitionKey().equals(key)) +return ImmutableBTreePartition.create(partition).toString(); +} +} +} +return ""; +} + protected static ByteBuffer makeDigest(UnfilteredPartitionIterator iterator, ReadCommand command) { MessageDigest digest = FBUtilities.threadLocalMD5Digest(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java -- diff --git a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java index 2aa622e..1f3dbd0 100644 --- a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java +++ b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java @@ -99,7 +99,7 @@ public abstract class AbstractBTreePartition implements Partition, Iterable public DeletionTime partitionLevelDeletion() { -return holder().deletionInfo.getPartitionDeletion(); +return deletionInfo().getPartitionDeletion(); } public PartitionColumns columns() @@ -372,17 +372,21 @@ public abstract class AbstractBTreePartition implements Partition, Iterable { StringBuilder sb = new StringBuilder(); -sb.append(String.format("[%s.%s] key=%s columns=%s", +sb.append(String.format("[%s.%s] key=%s partition_deletion=%s columns=%s", metadata.ksName, metadata.cfName, metadata.getKeyValidator().getString(partitionKey().getKey()), +partitionLevelDeletion(), columns())); if (staticRow() != Rows.EMPTY_STATIC_ROW) -sb.append("\n").append(staticRow().toString(metadata)); +
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Potential AssertionError during ReadRepair of range tombstone and partition deletions Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ed9b04d6 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ed9b04d6 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ed9b04d6 Branch: refs/heads/trunk Commit: ed9b04d6aeffc85a2dbcd8c136df769491f79d85 Parents: 59d4c27 5e57dd1 Author: Sylvain LebresneAuthored: Thu Aug 24 11:36:14 2017 +0200 Committer: Sylvain Lebresne Committed: Thu Aug 24 11:36:14 2017 +0200 -- CHANGES.txt | 1 + .../org/apache/cassandra/db/ReadResponse.java | 22 + .../db/partitions/AbstractBTreePartition.java | 14 +-- .../db/partitions/PartitionUpdate.java | 9 ++ .../apache/cassandra/service/DataResolver.java | 70 +-- .../cassandra/service/DataResolverTest.java | 91 +++- 6 files changed, 192 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/CHANGES.txt -- diff --cc CHANGES.txt index 9e42ffb,2b49bc3..b22cb5e --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,11 -1,5 +1,12 @@@ -3.0.15 +3.11.1 + * Fix cassandra-stress hang issues when an error during cluster connection happens (CASSANDRA-12938) + * Better bootstrap failure message when blocked by (potential) range movement (CASSANDRA-13744) + * "ignore" option is ignored in sstableloader (CASSANDRA-13721) + * Deadlock in AbstractCommitLogSegmentManager (CASSANDRA-13652) + * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) + * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) +Merged from 3.0: + * Potential AssertionError during ReadRepair of range tombstone and partition deletions (CASSANDRA-13719) * Don't let stress write warmup data if n=0 (CASSANDRA-13773) * Gossip thread slows down when using batch commit log (CASSANDRA-12966) * Randomize batchlog endpoint selection with only 1 or 2 racks (CASSANDRA-12884) http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/db/ReadResponse.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java -- diff --cc src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java index 64d7dd1,7bd5345..435c324 --- a/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java +++ b/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java @@@ -314,9 -296,18 +314,18 @@@ public class PartitionUpdate extends Ab int nowInSecs = FBUtilities.nowInSeconds(); List asIterators = Lists.transform(updates, AbstractBTreePartition::unfilteredIterator); -return fromIterator(UnfilteredRowIterators.merge(asIterators, nowInSecs)); +return fromIterator(UnfilteredRowIterators.merge(asIterators, nowInSecs), ColumnFilter.all(updates.get(0).metadata())); } + // We override this, because the version in the super-class calls holder(), which build the update preventing + // further updates, but that's not necessary here and being able to check at least the partition deletion without + // "locking" the update is nice (and used in DataResolver.RepairMergeListener.MergeListener). + @Override + public DeletionInfo deletionInfo() + { + return deletionInfo; + } + /** * Modify this update to set every timestamp for live data to {@code newTimestamp} and * every deletion timestamp to {@code newTimestamp - 1}. http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/service/DataResolver.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/test/unit/org/apache/cassandra/service/DataResolverTest.java -- diff --cc test/unit/org/apache/cassandra/service/DataResolverTest.java index 8e4f385,65e18ce..2b1e095 --- a/test/unit/org/apache/cassandra/service/DataResolverTest.java +++ b/test/unit/org/apache/cassandra/service/DataResolverTest.java @@@ -576,9 -574,9 +576,9 @@@ public
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Potential AssertionError during ReadRepair of range tombstone and partition deletions Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/652d9f64 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/652d9f64 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/652d9f64 Branch: refs/heads/trunk Commit: 652d9f64f14d8375a8412561271a7abf27722f20 Parents: d2dcd7f ed9b04d Author: Sylvain LebresneAuthored: Thu Aug 24 11:39:35 2017 +0200 Committer: Sylvain Lebresne Committed: Thu Aug 24 11:39:35 2017 +0200 -- CHANGES.txt | 1 + .../org/apache/cassandra/db/ReadResponse.java | 22 + .../db/partitions/AbstractBTreePartition.java | 16 ++-- .../db/partitions/PartitionUpdate.java | 9 ++ .../apache/cassandra/service/DataResolver.java | 70 +-- .../cassandra/service/DataResolverTest.java | 91 +++- 6 files changed, 193 insertions(+), 16 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/652d9f64/CHANGES.txt -- diff --cc CHANGES.txt index d0ec78d,b22cb5e..e19e9dd --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -129,7 -6,9 +129,8 @@@ * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) Merged from 3.0: + * Potential AssertionError during ReadRepair of range tombstone and partition deletions (CASSANDRA-13719) * Don't let stress write warmup data if n=0 (CASSANDRA-13773) - * Gossip thread slows down when using batch commit log (CASSANDRA-12966) * Randomize batchlog endpoint selection with only 1 or 2 racks (CASSANDRA-12884) * Fix digest calculation for counter cells (CASSANDRA-13750) * Fix ColumnDefinition.cellValueType() for non-frozen collection and change SSTabledump to use type.toJSONString() (CASSANDRA-13573) http://git-wip-us.apache.org/repos/asf/cassandra/blob/652d9f64/src/java/org/apache/cassandra/db/ReadResponse.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/652d9f64/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java -- diff --cc src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java index d8f2856,90db062..d913cb3 --- a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java +++ b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java @@@ -94,10 -99,10 +94,10 @@@ public abstract class AbstractBTreePart public DeletionTime partitionLevelDeletion() { - return holder().deletionInfo.getPartitionDeletion(); + return deletionInfo().getPartitionDeletion(); } -public PartitionColumns columns() +public RegularAndStaticColumns columns() { return holder().columns; } @@@ -317,16 -322,21 +317,20 @@@ { StringBuilder sb = new StringBuilder(); - sb.append(String.format("[%s] key=%s columns=%s", - metadata().toString(), -sb.append(String.format("[%s.%s] key=%s partition_deletion=%s columns=%s", -metadata.ksName, -metadata.cfName, - metadata.getKeyValidator().getString(partitionKey().getKey()), ++sb.append(String.format("[%s] key=%s partition_deletion=%s columns=%s", ++metadata(), + metadata().partitionKeyType.getString(partitionKey().getKey()), + partitionLevelDeletion(), columns())); if (staticRow() != Rows.EMPTY_STATIC_ROW) - sb.append("\n").append(staticRow().toString(metadata())); -sb.append("\n").append(staticRow().toString(metadata, true)); ++sb.append("\n").append(staticRow().toString(metadata(), true)); - for (Row row : this) - sb.append("\n").append(row.toString(metadata())); + try (UnfilteredRowIterator iter = unfilteredIterator()) + { + while (iter.hasNext()) -sb.append("\n").append(iter.next().toString(metadata, true)); ++sb.append("\n").append(iter.next().toString(metadata(), true)); + } return sb.toString(); }
[1/6] cassandra git commit: Potential AssertionError during ReadRepair of range tombstone and partition deletions
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 6a1b1f26b -> 5e57dd14e refs/heads/cassandra-3.11 59d4c2719 -> ed9b04d6a refs/heads/trunk d2dcd7f88 -> 652d9f64f Potential AssertionError during ReadRepair of range tombstone and partition deletions patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13719 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5e57dd14 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5e57dd14 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5e57dd14 Branch: refs/heads/cassandra-3.0 Commit: 5e57dd14eb37adf06d2105227e0105d871ea6f76 Parents: 6a1b1f2 Author: Sylvain LebresneAuthored: Fri Jul 21 16:58:53 2017 +0200 Committer: Sylvain Lebresne Committed: Thu Aug 24 11:28:57 2017 +0200 -- CHANGES.txt | 1 + .../org/apache/cassandra/db/ReadResponse.java | 22 + .../db/partitions/AbstractBTreePartition.java | 14 +-- .../db/partitions/PartitionUpdate.java | 9 ++ .../apache/cassandra/service/DataResolver.java | 70 +-- .../cassandra/service/DataResolverTest.java | 91 +++- 6 files changed, 192 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 97dda05..2b49bc3 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * Potential AssertionError during ReadRepair of range tombstone and partition deletions (CASSANDRA-13719) * Don't let stress write warmup data if n=0 (CASSANDRA-13773) * Gossip thread slows down when using batch commit log (CASSANDRA-12966) * Randomize batchlog endpoint selection with only 1 or 2 racks (CASSANDRA-12884) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/src/java/org/apache/cassandra/db/ReadResponse.java -- diff --git a/src/java/org/apache/cassandra/db/ReadResponse.java b/src/java/org/apache/cassandra/db/ReadResponse.java index 693b52b..c59d00a 100644 --- a/src/java/org/apache/cassandra/db/ReadResponse.java +++ b/src/java/org/apache/cassandra/db/ReadResponse.java @@ -92,6 +92,28 @@ public abstract class ReadResponse public abstract boolean isDigestResponse(); +/** + * Creates a string of the requested partition in this read response suitable for debugging. + */ +public String toDebugString(ReadCommand command, DecoratedKey key) +{ +if (isDigestResponse()) +return "Digest:0x" + ByteBufferUtil.bytesToHex(digest(command)); + +try (UnfilteredPartitionIterator iter = makeIterator(command)) +{ +while (iter.hasNext()) +{ +try (UnfilteredRowIterator partition = iter.next()) +{ +if (partition.partitionKey().equals(key)) +return ImmutableBTreePartition.create(partition).toString(); +} +} +} +return ""; +} + protected static ByteBuffer makeDigest(UnfilteredPartitionIterator iterator, ReadCommand command) { MessageDigest digest = FBUtilities.threadLocalMD5Digest(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java -- diff --git a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java index 2aa622e..1f3dbd0 100644 --- a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java +++ b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java @@ -99,7 +99,7 @@ public abstract class AbstractBTreePartition implements Partition, Iterable public DeletionTime partitionLevelDeletion() { -return holder().deletionInfo.getPartitionDeletion(); +return deletionInfo().getPartitionDeletion(); } public PartitionColumns columns() @@ -372,17 +372,21 @@ public abstract class AbstractBTreePartition implements Partition, Iterable { StringBuilder sb = new StringBuilder(); -sb.append(String.format("[%s.%s] key=%s columns=%s", +sb.append(String.format("[%s.%s] key=%s partition_deletion=%s columns=%s", metadata.ksName, metadata.cfName, metadata.getKeyValidator().getString(partitionKey().getKey()), +
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Potential AssertionError during ReadRepair of range tombstone and partition deletions Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ed9b04d6 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ed9b04d6 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ed9b04d6 Branch: refs/heads/cassandra-3.11 Commit: ed9b04d6aeffc85a2dbcd8c136df769491f79d85 Parents: 59d4c27 5e57dd1 Author: Sylvain LebresneAuthored: Thu Aug 24 11:36:14 2017 +0200 Committer: Sylvain Lebresne Committed: Thu Aug 24 11:36:14 2017 +0200 -- CHANGES.txt | 1 + .../org/apache/cassandra/db/ReadResponse.java | 22 + .../db/partitions/AbstractBTreePartition.java | 14 +-- .../db/partitions/PartitionUpdate.java | 9 ++ .../apache/cassandra/service/DataResolver.java | 70 +-- .../cassandra/service/DataResolverTest.java | 91 +++- 6 files changed, 192 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/CHANGES.txt -- diff --cc CHANGES.txt index 9e42ffb,2b49bc3..b22cb5e --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,11 -1,5 +1,12 @@@ -3.0.15 +3.11.1 + * Fix cassandra-stress hang issues when an error during cluster connection happens (CASSANDRA-12938) + * Better bootstrap failure message when blocked by (potential) range movement (CASSANDRA-13744) + * "ignore" option is ignored in sstableloader (CASSANDRA-13721) + * Deadlock in AbstractCommitLogSegmentManager (CASSANDRA-13652) + * Duplicate the buffer before passing it to analyser in SASI operation (CASSANDRA-13512) + * Properly evict pstmts from prepared statements cache (CASSANDRA-13641) +Merged from 3.0: + * Potential AssertionError during ReadRepair of range tombstone and partition deletions (CASSANDRA-13719) * Don't let stress write warmup data if n=0 (CASSANDRA-13773) * Gossip thread slows down when using batch commit log (CASSANDRA-12966) * Randomize batchlog endpoint selection with only 1 or 2 racks (CASSANDRA-12884) http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/db/ReadResponse.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java -- diff --cc src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java index 64d7dd1,7bd5345..435c324 --- a/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java +++ b/src/java/org/apache/cassandra/db/partitions/PartitionUpdate.java @@@ -314,9 -296,18 +314,18 @@@ public class PartitionUpdate extends Ab int nowInSecs = FBUtilities.nowInSeconds(); List asIterators = Lists.transform(updates, AbstractBTreePartition::unfilteredIterator); -return fromIterator(UnfilteredRowIterators.merge(asIterators, nowInSecs)); +return fromIterator(UnfilteredRowIterators.merge(asIterators, nowInSecs), ColumnFilter.all(updates.get(0).metadata())); } + // We override this, because the version in the super-class calls holder(), which build the update preventing + // further updates, but that's not necessary here and being able to check at least the partition deletion without + // "locking" the update is nice (and used in DataResolver.RepairMergeListener.MergeListener). + @Override + public DeletionInfo deletionInfo() + { + return deletionInfo; + } + /** * Modify this update to set every timestamp for live data to {@code newTimestamp} and * every deletion timestamp to {@code newTimestamp - 1}. http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/src/java/org/apache/cassandra/service/DataResolver.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ed9b04d6/test/unit/org/apache/cassandra/service/DataResolverTest.java -- diff --cc test/unit/org/apache/cassandra/service/DataResolverTest.java index 8e4f385,65e18ce..2b1e095 --- a/test/unit/org/apache/cassandra/service/DataResolverTest.java +++ b/test/unit/org/apache/cassandra/service/DataResolverTest.java @@@ -576,9 -574,9 +576,9
[3/6] cassandra git commit: Potential AssertionError during ReadRepair of range tombstone and partition deletions
Potential AssertionError during ReadRepair of range tombstone and partition deletions patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13719 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5e57dd14 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5e57dd14 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5e57dd14 Branch: refs/heads/trunk Commit: 5e57dd14eb37adf06d2105227e0105d871ea6f76 Parents: 6a1b1f2 Author: Sylvain LebresneAuthored: Fri Jul 21 16:58:53 2017 +0200 Committer: Sylvain Lebresne Committed: Thu Aug 24 11:28:57 2017 +0200 -- CHANGES.txt | 1 + .../org/apache/cassandra/db/ReadResponse.java | 22 + .../db/partitions/AbstractBTreePartition.java | 14 +-- .../db/partitions/PartitionUpdate.java | 9 ++ .../apache/cassandra/service/DataResolver.java | 70 +-- .../cassandra/service/DataResolverTest.java | 91 +++- 6 files changed, 192 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 97dda05..2b49bc3 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.15 + * Potential AssertionError during ReadRepair of range tombstone and partition deletions (CASSANDRA-13719) * Don't let stress write warmup data if n=0 (CASSANDRA-13773) * Gossip thread slows down when using batch commit log (CASSANDRA-12966) * Randomize batchlog endpoint selection with only 1 or 2 racks (CASSANDRA-12884) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/src/java/org/apache/cassandra/db/ReadResponse.java -- diff --git a/src/java/org/apache/cassandra/db/ReadResponse.java b/src/java/org/apache/cassandra/db/ReadResponse.java index 693b52b..c59d00a 100644 --- a/src/java/org/apache/cassandra/db/ReadResponse.java +++ b/src/java/org/apache/cassandra/db/ReadResponse.java @@ -92,6 +92,28 @@ public abstract class ReadResponse public abstract boolean isDigestResponse(); +/** + * Creates a string of the requested partition in this read response suitable for debugging. + */ +public String toDebugString(ReadCommand command, DecoratedKey key) +{ +if (isDigestResponse()) +return "Digest:0x" + ByteBufferUtil.bytesToHex(digest(command)); + +try (UnfilteredPartitionIterator iter = makeIterator(command)) +{ +while (iter.hasNext()) +{ +try (UnfilteredRowIterator partition = iter.next()) +{ +if (partition.partitionKey().equals(key)) +return ImmutableBTreePartition.create(partition).toString(); +} +} +} +return ""; +} + protected static ByteBuffer makeDigest(UnfilteredPartitionIterator iterator, ReadCommand command) { MessageDigest digest = FBUtilities.threadLocalMD5Digest(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/5e57dd14/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java -- diff --git a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java index 2aa622e..1f3dbd0 100644 --- a/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java +++ b/src/java/org/apache/cassandra/db/partitions/AbstractBTreePartition.java @@ -99,7 +99,7 @@ public abstract class AbstractBTreePartition implements Partition, Iterable public DeletionTime partitionLevelDeletion() { -return holder().deletionInfo.getPartitionDeletion(); +return deletionInfo().getPartitionDeletion(); } public PartitionColumns columns() @@ -372,17 +372,21 @@ public abstract class AbstractBTreePartition implements Partition, Iterable { StringBuilder sb = new StringBuilder(); -sb.append(String.format("[%s.%s] key=%s columns=%s", +sb.append(String.format("[%s.%s] key=%s partition_deletion=%s columns=%s", metadata.ksName, metadata.cfName, metadata.getKeyValidator().getString(partitionKey().getKey()), +partitionLevelDeletion(), columns())); if (staticRow() != Rows.EMPTY_STATIC_ROW) -sb.append("\n").append(staticRow().toString(metadata)); +
[3/6] cassandra git commit: Legacy deserializer can create empty range tombstones
Legacy deserializer can create empty range tombstones patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13341 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/451fe9d8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/451fe9d8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/451fe9d8 Branch: refs/heads/trunk Commit: 451fe9d8ac567942f62852f542d28d7d1116f1a1 Parents: 6edc268 Author: Sylvain LebresneAuthored: Thu Mar 16 17:25:39 2017 +0100 Committer: Sylvain Lebresne Committed: Wed Mar 29 13:17:58 2017 +0200 -- CHANGES.txt | 1 + .../cassandra/db/UnfilteredDeserializer.java| 124 ++- .../db/rows/RangeTombstoneBoundMarker.java | 8 ++ .../db/rows/RangeTombstoneBoundaryMarker.java | 5 + .../cassandra/db/rows/RangeTombstoneMarker.java | 2 + .../cassandra/db/OldFormatDeserializerTest.java | 54 6 files changed, 162 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/451fe9d8/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index b46eb50..c4293de 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Legacy deserializer can create empty range tombstones (CASSANDRA-13341) * Use the Kernel32 library to retrieve the PID on Windows and fix startup checks (CASSANDRA-1) * Fix code to not exchange schema across major versions (CASSANDRA-13274) * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) http://git-wip-us.apache.org/repos/asf/cassandra/blob/451fe9d8/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index 7bbbfdb..92690e1 100644 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@ -26,8 +26,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Iterables; import com.google.common.collect.PeekingIterator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.io.util.DataInputPlus; @@ -43,8 +41,6 @@ import org.apache.cassandra.net.MessagingService; */ public abstract class UnfilteredDeserializer { -private static final Logger logger = LoggerFactory.getLogger(UnfilteredDeserializer.class); - protected final CFMetaData metadata; protected final DataInputPlus in; protected final SerializationHelper helper; @@ -433,21 +429,31 @@ public abstract class UnfilteredDeserializer { if (atoms.hasNext()) { +// If there is a range tombstone to open strictly before the next row/RT, we need to return that open (or boundary) marker first. +if (tombstoneTracker.hasOpeningMarkerBefore(atoms.peek())) +{ +next = tombstoneTracker.popOpeningMarker(); +} // If a range tombstone closes strictly before the next row/RT, we need to return that close (or boundary) marker first. -if (tombstoneTracker.hasClosingMarkerBefore(atoms.peek())) +else if (tombstoneTracker.hasClosingMarkerBefore(atoms.peek())) { next = tombstoneTracker.popClosingMarker(); } else { LegacyLayout.LegacyAtom atom = atoms.next(); -if (!tombstoneTracker.isShadowed(atom)) -next = isRow(atom) ? readRow(atom) : tombstoneTracker.openNew(atom.asRangeTombstone()); +if (tombstoneTracker.isShadowed(atom)) +continue; + +if (isRow(atom)) +next = readRow(atom); +else + tombstoneTracker.openNew(atom.asRangeTombstone()); } } else if (tombstoneTracker.hasOpenTombstones()) { -next = tombstoneTracker.popClosingMarker(); +next = tombstoneTracker.popMarker(); }
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Legacy deserializer can create empty range tombstones Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/07795f10 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/07795f10 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/07795f10 Branch: refs/heads/trunk Commit: 07795f1016970ac519503293883c1f7013f3f48a Parents: ea708c4 580963a Author: Sylvain LebresneAuthored: Wed Mar 29 13:24:39 2017 +0200 Committer: Sylvain Lebresne Committed: Wed Mar 29 13:24:39 2017 +0200 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/UnfilteredDeserializer.java | 5 - .../apache/cassandra/db/rows/RangeTombstoneBoundMarker.java | 8 .../cassandra/db/rows/RangeTombstoneBoundaryMarker.java | 5 + .../org/apache/cassandra/db/rows/RangeTombstoneMarker.java | 2 ++ 5 files changed, 16 insertions(+), 5 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/07795f10/CHANGES.txt -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/07795f10/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --cc src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index d361bac,05e8148..84ff691 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@@ -18,13 -18,19 +18,10 @@@ package org.apache.cassandra.db; import java.io.IOException; -import java.io.IOError; -import java.util.*; -import java.util.function.Supplier; - import org.slf4j.Logger; - import org.slf4j.LoggerFactory; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.collect.Iterables; -import com.google.common.collect.PeekingIterator; -- -import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.schema.TableMetadata; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.io.util.DataInputPlus; -import org.apache.cassandra.io.util.FileDataInput; -import org.apache.cassandra.net.MessagingService; /** * Helper class to deserialize Unfiltered object from disk efficiently. @@@ -33,11 -39,9 +30,9 @@@ * we don't do more work than necessary (i.e. we don't allocate/deserialize * objects for things we don't care about). */ -public abstract class UnfilteredDeserializer +public class UnfilteredDeserializer { - private static final Logger logger = LoggerFactory.getLogger(UnfilteredDeserializer.class); - -protected final CFMetaData metadata; +protected final TableMetadata metadata; protected final DataInputPlus in; protected final SerializationHelper helper; http://git-wip-us.apache.org/repos/asf/cassandra/blob/07795f10/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundMarker.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/07795f10/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java --
[2/6] cassandra git commit: Legacy deserializer can create empty range tombstones
Legacy deserializer can create empty range tombstones patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13341 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/451fe9d8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/451fe9d8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/451fe9d8 Branch: refs/heads/cassandra-3.11 Commit: 451fe9d8ac567942f62852f542d28d7d1116f1a1 Parents: 6edc268 Author: Sylvain LebresneAuthored: Thu Mar 16 17:25:39 2017 +0100 Committer: Sylvain Lebresne Committed: Wed Mar 29 13:17:58 2017 +0200 -- CHANGES.txt | 1 + .../cassandra/db/UnfilteredDeserializer.java| 124 ++- .../db/rows/RangeTombstoneBoundMarker.java | 8 ++ .../db/rows/RangeTombstoneBoundaryMarker.java | 5 + .../cassandra/db/rows/RangeTombstoneMarker.java | 2 + .../cassandra/db/OldFormatDeserializerTest.java | 54 6 files changed, 162 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/451fe9d8/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index b46eb50..c4293de 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Legacy deserializer can create empty range tombstones (CASSANDRA-13341) * Use the Kernel32 library to retrieve the PID on Windows and fix startup checks (CASSANDRA-1) * Fix code to not exchange schema across major versions (CASSANDRA-13274) * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) http://git-wip-us.apache.org/repos/asf/cassandra/blob/451fe9d8/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index 7bbbfdb..92690e1 100644 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@ -26,8 +26,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Iterables; import com.google.common.collect.PeekingIterator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.io.util.DataInputPlus; @@ -43,8 +41,6 @@ import org.apache.cassandra.net.MessagingService; */ public abstract class UnfilteredDeserializer { -private static final Logger logger = LoggerFactory.getLogger(UnfilteredDeserializer.class); - protected final CFMetaData metadata; protected final DataInputPlus in; protected final SerializationHelper helper; @@ -433,21 +429,31 @@ public abstract class UnfilteredDeserializer { if (atoms.hasNext()) { +// If there is a range tombstone to open strictly before the next row/RT, we need to return that open (or boundary) marker first. +if (tombstoneTracker.hasOpeningMarkerBefore(atoms.peek())) +{ +next = tombstoneTracker.popOpeningMarker(); +} // If a range tombstone closes strictly before the next row/RT, we need to return that close (or boundary) marker first. -if (tombstoneTracker.hasClosingMarkerBefore(atoms.peek())) +else if (tombstoneTracker.hasClosingMarkerBefore(atoms.peek())) { next = tombstoneTracker.popClosingMarker(); } else { LegacyLayout.LegacyAtom atom = atoms.next(); -if (!tombstoneTracker.isShadowed(atom)) -next = isRow(atom) ? readRow(atom) : tombstoneTracker.openNew(atom.asRangeTombstone()); +if (tombstoneTracker.isShadowed(atom)) +continue; + +if (isRow(atom)) +next = readRow(atom); +else + tombstoneTracker.openNew(atom.asRangeTombstone()); } } else if (tombstoneTracker.hasOpenTombstones()) { -next = tombstoneTracker.popClosingMarker(); +next = tombstoneTracker.popMarker(); }
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Legacy deserializer can create empty range tombstones Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/580963a2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/580963a2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/580963a2 Branch: refs/heads/trunk Commit: 580963a2184b8f70f319ba59353fd258de239e36 Parents: bd77081 451fe9d Author: Sylvain LebresneAuthored: Wed Mar 29 13:22:29 2017 +0200 Committer: Sylvain Lebresne Committed: Wed Mar 29 13:22:29 2017 +0200 -- CHANGES.txt | 1 + .../cassandra/db/UnfilteredDeserializer.java| 119 ++- .../db/rows/RangeTombstoneBoundMarker.java | 8 ++ .../db/rows/RangeTombstoneBoundaryMarker.java | 5 + .../cassandra/db/rows/RangeTombstoneMarker.java | 2 + .../cassandra/db/OldFormatDeserializerTest.java | 54 + 6 files changed, 162 insertions(+), 27 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/CHANGES.txt -- diff --cc CHANGES.txt index 9cd1ca7,c4293de..81f4688 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,24 -1,5 +1,25 @@@ -3.0.13 +3.11.0 + * cdc column addition strikes again (CASSANDRA-13382) + * Fix static column indexes (CASSANDRA-13277) + * DataOutputBuffer.asNewBuffer broken (CASSANDRA-13298) + * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) + * Forbid SELECT restrictions and CREATE INDEX over non-frozen UDT columns (CASSANDRA-13247) + * Default logging we ship will incorrectly print "?:?" for "%F:%L" pattern (CASSANDRA-13317) + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) + * Support unaligned memory access for AArch64 (CASSANDRA-13326) + * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) + * Address message coalescing regression (CASSANDRA-12676) +Merged from 3.0: + * Legacy deserializer can create empty range tombstones (CASSANDRA-13341) + * Legacy caching options can prevent 3.0 upgrade (CASSANDRA-13384) * Use the Kernel32 library to retrieve the PID on Windows and fix startup checks (CASSANDRA-1) * Fix code to not exchange schema across major versions (CASSANDRA-13274) * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundMarker.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java -- diff --cc src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java index fd41bea,0683d76..70d6a9d --- a/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java +++ b/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java @@@ -120,9 -120,14 +120,14 @@@ public class RangeTombstoneBoundaryMark return new RangeTombstoneBoundaryMarker(clustering().copy(allocator), endDeletion, startDeletion); } + public RangeTombstoneBoundaryMarker withNewOpeningDeletionTime(boolean reversed, DeletionTime newDeletionTime) + { + return new RangeTombstoneBoundaryMarker(clustering(), reversed ? newDeletionTime : endDeletion, reversed ? startDeletion : newDeletionTime); + } + -public static RangeTombstoneBoundaryMarker makeBoundary(boolean reversed, Slice.Bound close, Slice.Bound open, DeletionTime closeDeletion, DeletionTime openDeletion) +public static RangeTombstoneBoundaryMarker makeBoundary(boolean reversed, ClusteringBound close, ClusteringBound open, DeletionTime closeDeletion, DeletionTime openDeletion) { -assert
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Legacy deserializer can create empty range tombstones Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/580963a2 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/580963a2 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/580963a2 Branch: refs/heads/cassandra-3.11 Commit: 580963a2184b8f70f319ba59353fd258de239e36 Parents: bd77081 451fe9d Author: Sylvain LebresneAuthored: Wed Mar 29 13:22:29 2017 +0200 Committer: Sylvain Lebresne Committed: Wed Mar 29 13:22:29 2017 +0200 -- CHANGES.txt | 1 + .../cassandra/db/UnfilteredDeserializer.java| 119 ++- .../db/rows/RangeTombstoneBoundMarker.java | 8 ++ .../db/rows/RangeTombstoneBoundaryMarker.java | 5 + .../cassandra/db/rows/RangeTombstoneMarker.java | 2 + .../cassandra/db/OldFormatDeserializerTest.java | 54 + 6 files changed, 162 insertions(+), 27 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/CHANGES.txt -- diff --cc CHANGES.txt index 9cd1ca7,c4293de..81f4688 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,24 -1,5 +1,25 @@@ -3.0.13 +3.11.0 + * cdc column addition strikes again (CASSANDRA-13382) + * Fix static column indexes (CASSANDRA-13277) + * DataOutputBuffer.asNewBuffer broken (CASSANDRA-13298) + * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) + * Forbid SELECT restrictions and CREATE INDEX over non-frozen UDT columns (CASSANDRA-13247) + * Default logging we ship will incorrectly print "?:?" for "%F:%L" pattern (CASSANDRA-13317) + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) + * Support unaligned memory access for AArch64 (CASSANDRA-13326) + * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) + * Address message coalescing regression (CASSANDRA-12676) +Merged from 3.0: + * Legacy deserializer can create empty range tombstones (CASSANDRA-13341) + * Legacy caching options can prevent 3.0 upgrade (CASSANDRA-13384) * Use the Kernel32 library to retrieve the PID on Windows and fix startup checks (CASSANDRA-1) * Fix code to not exchange schema across major versions (CASSANDRA-13274) * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundMarker.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/580963a2/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java -- diff --cc src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java index fd41bea,0683d76..70d6a9d --- a/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java +++ b/src/java/org/apache/cassandra/db/rows/RangeTombstoneBoundaryMarker.java @@@ -120,9 -120,14 +120,14 @@@ public class RangeTombstoneBoundaryMark return new RangeTombstoneBoundaryMarker(clustering().copy(allocator), endDeletion, startDeletion); } + public RangeTombstoneBoundaryMarker withNewOpeningDeletionTime(boolean reversed, DeletionTime newDeletionTime) + { + return new RangeTombstoneBoundaryMarker(clustering(), reversed ? newDeletionTime : endDeletion, reversed ? startDeletion : newDeletionTime); + } + -public static RangeTombstoneBoundaryMarker makeBoundary(boolean reversed, Slice.Bound close, Slice.Bound open, DeletionTime closeDeletion, DeletionTime openDeletion) +public static RangeTombstoneBoundaryMarker makeBoundary(boolean reversed, ClusteringBound close, ClusteringBound open, DeletionTime closeDeletion, DeletionTime openDeletion) { -assert
[1/6] cassandra git commit: Legacy deserializer can create empty range tombstones
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 6edc26824 -> 451fe9d8a refs/heads/cassandra-3.11 bd7708192 -> 580963a21 refs/heads/trunk ea708c47e -> 07795f101 Legacy deserializer can create empty range tombstones patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13341 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/451fe9d8 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/451fe9d8 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/451fe9d8 Branch: refs/heads/cassandra-3.0 Commit: 451fe9d8ac567942f62852f542d28d7d1116f1a1 Parents: 6edc268 Author: Sylvain LebresneAuthored: Thu Mar 16 17:25:39 2017 +0100 Committer: Sylvain Lebresne Committed: Wed Mar 29 13:17:58 2017 +0200 -- CHANGES.txt | 1 + .../cassandra/db/UnfilteredDeserializer.java| 124 ++- .../db/rows/RangeTombstoneBoundMarker.java | 8 ++ .../db/rows/RangeTombstoneBoundaryMarker.java | 5 + .../cassandra/db/rows/RangeTombstoneMarker.java | 2 + .../cassandra/db/OldFormatDeserializerTest.java | 54 6 files changed, 162 insertions(+), 32 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/451fe9d8/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index b46eb50..c4293de 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Legacy deserializer can create empty range tombstones (CASSANDRA-13341) * Use the Kernel32 library to retrieve the PID on Windows and fix startup checks (CASSANDRA-1) * Fix code to not exchange schema across major versions (CASSANDRA-13274) * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) http://git-wip-us.apache.org/repos/asf/cassandra/blob/451fe9d8/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index 7bbbfdb..92690e1 100644 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@ -26,8 +26,6 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Iterables; import com.google.common.collect.PeekingIterator; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.cassandra.config.CFMetaData; import org.apache.cassandra.db.rows.*; import org.apache.cassandra.io.util.DataInputPlus; @@ -43,8 +41,6 @@ import org.apache.cassandra.net.MessagingService; */ public abstract class UnfilteredDeserializer { -private static final Logger logger = LoggerFactory.getLogger(UnfilteredDeserializer.class); - protected final CFMetaData metadata; protected final DataInputPlus in; protected final SerializationHelper helper; @@ -433,21 +429,31 @@ public abstract class UnfilteredDeserializer { if (atoms.hasNext()) { +// If there is a range tombstone to open strictly before the next row/RT, we need to return that open (or boundary) marker first. +if (tombstoneTracker.hasOpeningMarkerBefore(atoms.peek())) +{ +next = tombstoneTracker.popOpeningMarker(); +} // If a range tombstone closes strictly before the next row/RT, we need to return that close (or boundary) marker first. -if (tombstoneTracker.hasClosingMarkerBefore(atoms.peek())) +else if (tombstoneTracker.hasClosingMarkerBefore(atoms.peek())) { next = tombstoneTracker.popClosingMarker(); } else { LegacyLayout.LegacyAtom atom = atoms.next(); -if (!tombstoneTracker.isShadowed(atom)) -next = isRow(atom) ? readRow(atom) : tombstoneTracker.openNew(atom.asRangeTombstone()); +if (tombstoneTracker.isShadowed(atom)) +continue; + +if (isRow(atom)) +next = readRow(atom); +else + tombstoneTracker.openNew(atom.asRangeTombstone()); } } else if (tombstoneTracker.hasOpenTombstones())
[1/3] cassandra git commit: cdc column addition strikes again
Repository: cassandra Updated Branches: refs/heads/cassandra-3.11 41befde22 -> 8ea0afa3d refs/heads/trunk 380a614f1 -> 3bd152e6c cdc column addition strikes again patch by Sylvain Lebresne; reviewed by Aleksey Yeschenko for CASSANDRA-13382 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8ea0afa3 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8ea0afa3 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8ea0afa3 Branch: refs/heads/cassandra-3.11 Commit: 8ea0afa3dbced228dbe9332bae6b5b2a1760bd8a Parents: 41befde Author: Sylvain LebresneAuthored: Mon Mar 27 11:27:28 2017 +0200 Committer: Sylvain Lebresne Committed: Tue Mar 28 14:35:00 2017 +0200 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/schema/SchemaKeyspace.java | 11 +-- 2 files changed, 10 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ea0afa3/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 217..c7cc26e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.11.0 + * cdc column addition strikes again (CASSANDRA-13382) * Fix static column indexes (CASSANDRA-13277) * DataOutputBuffer.asNewBuffer broken (CASSANDRA-13298) * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ea0afa3/src/java/org/apache/cassandra/schema/SchemaKeyspace.java -- diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java index 58580b9..ff7cf04 100644 --- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java +++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java @@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.MapDifference; import com.google.common.collect.Maps; import org.slf4j.Logger; @@ -84,6 +85,12 @@ public final class SchemaKeyspace public static final List ALL = ImmutableList.of(KEYSPACES, TABLES, COLUMNS, DROPPED_COLUMNS, TRIGGERS, VIEWS, TYPES, FUNCTIONS, AGGREGATES, INDEXES); +/** + * The tables to which we added the cdc column. This is used in {@link #makeUpdateForSchema} below to make sure we skip that + * column is cdc is disabled as the columns breaks pre-cdc to post-cdc upgrades (typically, 3.0 -> 3.X). + */ +private static final Set TABLES_WITH_CDC_ADDED = ImmutableSet.of(TABLES, VIEWS); + private static final CFMetaData Keyspaces = compile(KEYSPACES, "keyspace definitions", @@ -385,9 +392,9 @@ public final class SchemaKeyspace private static PartitionUpdate makeUpdateForSchema(UnfilteredRowIterator partition, ColumnFilter filter) { // This method is used during schema migration tasks, and if cdc is disabled, we want to force excluding the -// 'cdc' column from the TABLES schema table because it is problematic if received by older nodes (see #12236 +// 'cdc' column from the TABLES/VIEWS schema table because it is problematic if received by older nodes (see #12236 // and #12697). Otherwise though, we just simply "buffer" the content of the partition into a PartitionUpdate. -if (DatabaseDescriptor.isCDCEnabled() || !partition.metadata().cfName.equals(TABLES)) +if (DatabaseDescriptor.isCDCEnabled() || !TABLES_WITH_CDC_ADDED.contains(partition.metadata().cfName)) return PartitionUpdate.fromIterator(partition, filter); // We want to skip the 'cdc' column. A simple solution for that is based on the fact that
[3/3] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: cdc column addition strikes again Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3bd152e6 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3bd152e6 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3bd152e6 Branch: refs/heads/trunk Commit: 3bd152e6cc82f5314ec14ea854ebbf6ad602609f Parents: 380a614 8ea0afa Author: Sylvain LebresneAuthored: Tue Mar 28 14:38:17 2017 +0200 Committer: Sylvain Lebresne Committed: Tue Mar 28 14:38:17 2017 +0200 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/schema/SchemaKeyspace.java | 11 +-- 2 files changed, 10 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3bd152e6/CHANGES.txt -- diff --cc CHANGES.txt index a9f0c06,c7cc26e..7ec782c --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,52 -1,5 +1,53 @@@ +4.0 + * Outbound TCP connections ignore internode authenticator (CASSANDRA-13324) + * Upgrade junit from 4.6 to 4.12 (CASSANDRA-13360) + * Cleanup ParentRepairSession after repairs (CASSANDRA-13359) + * Incremental repair not streaming correct sstables (CASSANDRA-13328) + * Upgrade the jna version to 4.3.0 (CASSANDRA-13300) + * Add the currentTimestamp, currentDate, currentTime and currentTimeUUID functions (CASSANDRA-13132) + * Remove config option index_interval (CASSANDRA-10671) + * Reduce lock contention for collection types and serializers (CASSANDRA-13271) + * Make it possible to override MessagingService.Verb ids (CASSANDRA-13283) + * Avoid synchronized on prepareForRepair in ActiveRepairService (CASSANDRA-9292) + * Adds the ability to use uncompressed chunks in compressed files (CASSANDRA-10520) + * Don't flush sstables when streaming for incremental repair (CASSANDRA-13226) + * Remove unused method (CASSANDRA-13227) + * Fix minor bugs related to #9143 (CASSANDRA-13217) + * Output warning if user increases RF (CASSANDRA-13079) + * Remove pre-3.0 streaming compatibility code for 4.0 (CASSANDRA-13081) + * Add support for + and - operations on dates (CASSANDRA-11936) + * Fix consistency of incrementally repaired data (CASSANDRA-9143) + * Increase commitlog version (CASSANDRA-13161) + * Make TableMetadata immutable, optimize Schema (CASSANDRA-9425) + * Refactor ColumnCondition (CASSANDRA-12981) + * Parallelize streaming of different keyspaces (CASSANDRA-4663) + * Improved compactions metrics (CASSANDRA-13015) + * Speed-up start-up sequence by avoiding un-needed flushes (CASSANDRA-13031) + * Use Caffeine (W-TinyLFU) for on-heap caches (CASSANDRA-10855) + * Thrift removal (CASSANDRA-5) + * Remove pre-3.0 compatibility code for 4.0 (CASSANDRA-12716) + * Add column definition kind to dropped columns in schema (CASSANDRA-12705) + * Add (automate) Nodetool Documentation (CASSANDRA-12672) + * Update bundled cqlsh python driver to 3.7.0 (CASSANDRA-12736) + * Reject invalid replication settings when creating or altering a keyspace (CASSANDRA-12681) + * Clean up the SSTableReader#getScanner API wrt removal of RateLimiter (CASSANDRA-12422) + * Use new token allocation for non bootstrap case as well (CASSANDRA-13080) + * Avoid byte-array copy when key cache is disabled (CASSANDRA-13084) + * Require forceful decommission if number of nodes is less than replication factor (CASSANDRA-12510) + * Allow IN restrictions on column families with collections (CASSANDRA-12654) + * Log message size in trace message in OutboundTcpConnection (CASSANDRA-13028) + * Add timeUnit Days for cassandra-stress (CASSANDRA-13029) + * Add mutation size and batch metrics (CASSANDRA-12649) + * Add method to get size of endpoints to TokenMetadata (CASSANDRA-12999) + * Expose time spent waiting in thread pool queue (CASSANDRA-8398) + * Conditionally update index built status to avoid unnecessary flushes (CASSANDRA-12969) + * cqlsh auto completion: refactor definition of compaction strategy options (CASSANDRA-12946) + * Add support for arithmetic operators (CASSANDRA-11935) + * Add histogram for delay to deliver hints (CASSANDRA-13234) + + 3.11.0 + * cdc column addition strikes again (CASSANDRA-13382) * Fix static column indexes (CASSANDRA-13277) * DataOutputBuffer.asNewBuffer broken (CASSANDRA-13298) * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) http://git-wip-us.apache.org/repos/asf/cassandra/blob/3bd152e6/src/java/org/apache/cassandra/schema/SchemaKeyspace.java -- diff --cc src/java/org/apache/cassandra/schema/SchemaKeyspace.java index
[2/3] cassandra git commit: cdc column addition strikes again
cdc column addition strikes again patch by Sylvain Lebresne; reviewed by Aleksey Yeschenko for CASSANDRA-13382 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8ea0afa3 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8ea0afa3 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8ea0afa3 Branch: refs/heads/trunk Commit: 8ea0afa3dbced228dbe9332bae6b5b2a1760bd8a Parents: 41befde Author: Sylvain LebresneAuthored: Mon Mar 27 11:27:28 2017 +0200 Committer: Sylvain Lebresne Committed: Tue Mar 28 14:35:00 2017 +0200 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/schema/SchemaKeyspace.java | 11 +-- 2 files changed, 10 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ea0afa3/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 217..c7cc26e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.11.0 + * cdc column addition strikes again (CASSANDRA-13382) * Fix static column indexes (CASSANDRA-13277) * DataOutputBuffer.asNewBuffer broken (CASSANDRA-13298) * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) http://git-wip-us.apache.org/repos/asf/cassandra/blob/8ea0afa3/src/java/org/apache/cassandra/schema/SchemaKeyspace.java -- diff --git a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java index 58580b9..ff7cf04 100644 --- a/src/java/org/apache/cassandra/schema/SchemaKeyspace.java +++ b/src/java/org/apache/cassandra/schema/SchemaKeyspace.java @@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.MapDifference; import com.google.common.collect.Maps; import org.slf4j.Logger; @@ -84,6 +85,12 @@ public final class SchemaKeyspace public static final List ALL = ImmutableList.of(KEYSPACES, TABLES, COLUMNS, DROPPED_COLUMNS, TRIGGERS, VIEWS, TYPES, FUNCTIONS, AGGREGATES, INDEXES); +/** + * The tables to which we added the cdc column. This is used in {@link #makeUpdateForSchema} below to make sure we skip that + * column is cdc is disabled as the columns breaks pre-cdc to post-cdc upgrades (typically, 3.0 -> 3.X). + */ +private static final Set TABLES_WITH_CDC_ADDED = ImmutableSet.of(TABLES, VIEWS); + private static final CFMetaData Keyspaces = compile(KEYSPACES, "keyspace definitions", @@ -385,9 +392,9 @@ public final class SchemaKeyspace private static PartitionUpdate makeUpdateForSchema(UnfilteredRowIterator partition, ColumnFilter filter) { // This method is used during schema migration tasks, and if cdc is disabled, we want to force excluding the -// 'cdc' column from the TABLES schema table because it is problematic if received by older nodes (see #12236 +// 'cdc' column from the TABLES/VIEWS schema table because it is problematic if received by older nodes (see #12236 // and #12697). Otherwise though, we just simply "buffer" the content of the partition into a PartitionUpdate. -if (DatabaseDescriptor.isCDCEnabled() || !partition.metadata().cfName.equals(TABLES)) +if (DatabaseDescriptor.isCDCEnabled() || !TABLES_WITH_CDC_ADDED.contains(partition.metadata().cfName)) return PartitionUpdate.fromIterator(partition, filter); // We want to skip the 'cdc' column. A simple solution for that is based on the fact that
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Dropping column results in "corrupt" SSTable Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3dabeeaa Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3dabeeaa Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3dabeeaa Branch: refs/heads/trunk Commit: 3dabeeaa29bfb6757e79f17031cb467b7b052fcd Parents: 23cd27f c0ac928 Author: Sylvain LebresneAuthored: Mon Mar 27 12:04:20 2017 +0200 Committer: Sylvain Lebresne Committed: Mon Mar 27 12:04:20 2017 +0200 -- CHANGES.txt | 1 + .../db/columniterator/SSTableIterator.java | 78 .../columniterator/SSTableReversedIterator.java | 4 +- .../cassandra/db/rows/RangeTombstoneMarker.java | 6 ++ .../apache/cassandra/db/rows/Unfiltered.java| 2 + .../cassandra/db/rows/UnfilteredSerializer.java | 43 +-- .../cql3/validation/operations/AlterTest.java | 51 + 7 files changed, 145 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3dabeeaa/CHANGES.txt -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3dabeeaa/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3dabeeaa/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- diff --cc src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java index e67d164,88d415b..837562a --- a/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java @@@ -223,8 -228,12 +223,10 @@@ public class SSTableReversedIterator ex && !stopReadingDisk()) { Unfiltered unfiltered = deserializer.readNext(); - buffer.add(unfiltered); + // We may get empty row for the same reason expressed on UnfilteredSerializer.deserializeOne. -if (!unfiltered.isEmpty() && (!isFirst || includeFirst)) ++if (!unfiltered.isEmpty()) + buffer.add(unfiltered); -isFirst = false; - if (unfiltered.isRangeTombstoneMarker()) updateOpenMarker((RangeTombstoneMarker)unfiltered); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/3dabeeaa/src/java/org/apache/cassandra/db/rows/Unfiltered.java -- diff --cc src/java/org/apache/cassandra/db/rows/Unfiltered.java index 39d9e75,e75c632..e1158e2 --- a/src/java/org/apache/cassandra/db/rows/Unfiltered.java +++ b/src/java/org/apache/cassandra/db/rows/Unfiltered.java @@@ -53,11 -53,13 +53,13 @@@ public interface Unfiltered extends Clu * invalid (some value is invalid for its column type, or some field * is nonsensical). */ -public void validateData(CFMetaData metadata); +public void validateData(TableMetadata metadata); + public boolean isEmpty(); + -public String toString(CFMetaData metadata); -public String toString(CFMetaData metadata, boolean fullDetails); -public String toString(CFMetaData metadata, boolean includeClusterKeys, boolean fullDetails); +public String toString(TableMetadata metadata); +public String toString(TableMetadata metadata, boolean fullDetails); +public String toString(TableMetadata metadata, boolean includeClusterKeys, boolean fullDetails); default boolean isRow() { http://git-wip-us.apache.org/repos/asf/cassandra/blob/3dabeeaa/src/java/org/apache/cassandra/db/rows/UnfilteredSerializer.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/3dabeeaa/test/unit/org/apache/cassandra/cql3/validation/operations/AlterTest.java --
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Dropping column results in "corrupt" SSTable Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c0ac928d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c0ac928d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c0ac928d Branch: refs/heads/trunk Commit: c0ac928d985a59d00310fed124c5a2b3655db8e0 Parents: ee7023e 5262bb1 Author: Sylvain LebresneAuthored: Mon Mar 27 11:59:06 2017 +0200 Committer: Sylvain Lebresne Committed: Mon Mar 27 11:59:06 2017 +0200 -- CHANGES.txt | 1 + .../db/columniterator/SSTableIterator.java | 78 .../columniterator/SSTableReversedIterator.java | 3 +- .../cassandra/db/rows/RangeTombstoneMarker.java | 6 ++ .../apache/cassandra/db/rows/Unfiltered.java| 2 + .../cassandra/db/rows/UnfilteredSerializer.java | 43 +-- .../cql3/validation/operations/AlterTest.java | 51 + 7 files changed, 144 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/CHANGES.txt -- diff --cc CHANGES.txt index 071dd1a,0b1bb01..98ed992 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,20 -1,5 +1,21 @@@ -3.0.13 +3.11.0 + * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) + * Forbid SELECT restrictions and CREATE INDEX over non-frozen UDT columns (CASSANDRA-13247) + * Default logging we ship will incorrectly print "?:?" for "%F:%L" pattern (CASSANDRA-13317) + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) + * Support unaligned memory access for AArch64 (CASSANDRA-13326) + * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) + * Address message coalescing regression (CASSANDRA-12676) +Merged from 3.0: + * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) * Bugs handling range tombstones in the sstable iterators (CASSANDRA-13340) * Fix CONTAINS filtering for null collections (CASSANDRA-13246) * Applying: Use a unique metric reservoir per test run when using Cassandra-wide metrics residing in MBeans (CASSANDRA-13216) http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/rows/RangeTombstoneMarker.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/rows/Unfiltered.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/rows/UnfilteredSerializer.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/test/unit/org/apache/cassandra/cql3/validation/operations/AlterTest.java --
[2/6] cassandra git commit: Dropping column results in "corrupt" SSTable
Dropping column results in "corrupt" SSTable patch by Sylvain Lebresne; reviewed by Alex Petrov for CASSANDRA-13337 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5262bb17 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5262bb17 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5262bb17 Branch: refs/heads/cassandra-3.11 Commit: 5262bb17b46fc8c02f9f836ddf9317d0de2698cd Parents: 6311622 Author: Sylvain LebresneAuthored: Mon Mar 20 15:49:27 2017 +0100 Committer: Sylvain Lebresne Committed: Mon Mar 27 11:58:32 2017 +0200 -- CHANGES.txt | 1 + .../db/columniterator/SSTableIterator.java | 78 .../columniterator/SSTableReversedIterator.java | 3 +- .../cassandra/db/rows/RangeTombstoneMarker.java | 6 ++ .../apache/cassandra/db/rows/Unfiltered.java| 2 + .../cassandra/db/rows/UnfilteredSerializer.java | 43 +-- .../cql3/validation/operations/AlterTest.java | 51 + 7 files changed, 144 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5262bb17/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 2c5573a..0b1bb01 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) * Bugs handling range tombstones in the sstable iterators (CASSANDRA-13340) * Fix CONTAINS filtering for null collections (CASSANDRA-13246) * Applying: Use a unique metric reservoir per test run when using Cassandra-wide metrics residing in MBeans (CASSANDRA-13216) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5262bb17/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index 9bcca48..fa337c0 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -123,20 +123,27 @@ public class SSTableIterator extends AbstractSSTableIterator { assert deserializer != null; -// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. -// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those -// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound -// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because -// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it means it's exactly -// our slice end, but in that case we will properly close the range tombstone anyway as part of our "close -// an open marker" code in hasNextInterna -if (!deserializer.hasNext() || deserializer.compareNextTo(end) >= 0) -return null; - -Unfiltered next = deserializer.readNext(); -if (next.kind() == Unfiltered.Kind.RANGE_TOMBSTONE_MARKER) -updateOpenMarker((RangeTombstoneMarker)next); -return next; +while (true) +{ +// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. +// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those +// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound +// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because +// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it means it's exactly +// our slice end, but in that case we will properly close the range tombstone anyway as part of our "close +// an open marker" code in hasNextInterna +if (!deserializer.hasNext() || deserializer.compareNextTo(end) >= 0) +return null; + +Unfiltered next = deserializer.readNext(); +// We may get empty row for the same reason expressed on UnfilteredSerializer.deserializeOne. +if (next.isEmpty()) +continue; + +if (next.kind() == Unfiltered.Kind.RANGE_TOMBSTONE_MARKER) +
[3/6] cassandra git commit: Dropping column results in "corrupt" SSTable
Dropping column results in "corrupt" SSTable patch by Sylvain Lebresne; reviewed by Alex Petrov for CASSANDRA-13337 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5262bb17 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5262bb17 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5262bb17 Branch: refs/heads/trunk Commit: 5262bb17b46fc8c02f9f836ddf9317d0de2698cd Parents: 6311622 Author: Sylvain LebresneAuthored: Mon Mar 20 15:49:27 2017 +0100 Committer: Sylvain Lebresne Committed: Mon Mar 27 11:58:32 2017 +0200 -- CHANGES.txt | 1 + .../db/columniterator/SSTableIterator.java | 78 .../columniterator/SSTableReversedIterator.java | 3 +- .../cassandra/db/rows/RangeTombstoneMarker.java | 6 ++ .../apache/cassandra/db/rows/Unfiltered.java| 2 + .../cassandra/db/rows/UnfilteredSerializer.java | 43 +-- .../cql3/validation/operations/AlterTest.java | 51 + 7 files changed, 144 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5262bb17/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 2c5573a..0b1bb01 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) * Bugs handling range tombstones in the sstable iterators (CASSANDRA-13340) * Fix CONTAINS filtering for null collections (CASSANDRA-13246) * Applying: Use a unique metric reservoir per test run when using Cassandra-wide metrics residing in MBeans (CASSANDRA-13216) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5262bb17/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index 9bcca48..fa337c0 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -123,20 +123,27 @@ public class SSTableIterator extends AbstractSSTableIterator { assert deserializer != null; -// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. -// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those -// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound -// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because -// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it means it's exactly -// our slice end, but in that case we will properly close the range tombstone anyway as part of our "close -// an open marker" code in hasNextInterna -if (!deserializer.hasNext() || deserializer.compareNextTo(end) >= 0) -return null; - -Unfiltered next = deserializer.readNext(); -if (next.kind() == Unfiltered.Kind.RANGE_TOMBSTONE_MARKER) -updateOpenMarker((RangeTombstoneMarker)next); -return next; +while (true) +{ +// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. +// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those +// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound +// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because +// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it means it's exactly +// our slice end, but in that case we will properly close the range tombstone anyway as part of our "close +// an open marker" code in hasNextInterna +if (!deserializer.hasNext() || deserializer.compareNextTo(end) >= 0) +return null; + +Unfiltered next = deserializer.readNext(); +// We may get empty row for the same reason expressed on UnfilteredSerializer.deserializeOne. +if (next.isEmpty()) +continue; + +if (next.kind() == Unfiltered.Kind.RANGE_TOMBSTONE_MARKER) +
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Dropping column results in "corrupt" SSTable Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c0ac928d Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c0ac928d Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c0ac928d Branch: refs/heads/cassandra-3.11 Commit: c0ac928d985a59d00310fed124c5a2b3655db8e0 Parents: ee7023e 5262bb1 Author: Sylvain LebresneAuthored: Mon Mar 27 11:59:06 2017 +0200 Committer: Sylvain Lebresne Committed: Mon Mar 27 11:59:06 2017 +0200 -- CHANGES.txt | 1 + .../db/columniterator/SSTableIterator.java | 78 .../columniterator/SSTableReversedIterator.java | 3 +- .../cassandra/db/rows/RangeTombstoneMarker.java | 6 ++ .../apache/cassandra/db/rows/Unfiltered.java| 2 + .../cassandra/db/rows/UnfilteredSerializer.java | 43 +-- .../cql3/validation/operations/AlterTest.java | 51 + 7 files changed, 144 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/CHANGES.txt -- diff --cc CHANGES.txt index 071dd1a,0b1bb01..98ed992 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,20 -1,5 +1,21 @@@ -3.0.13 +3.11.0 + * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) + * Forbid SELECT restrictions and CREATE INDEX over non-frozen UDT columns (CASSANDRA-13247) + * Default logging we ship will incorrectly print "?:?" for "%F:%L" pattern (CASSANDRA-13317) + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) + * Support unaligned memory access for AArch64 (CASSANDRA-13326) + * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) + * Address message coalescing regression (CASSANDRA-12676) +Merged from 3.0: + * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) * Bugs handling range tombstones in the sstable iterators (CASSANDRA-13340) * Fix CONTAINS filtering for null collections (CASSANDRA-13246) * Applying: Use a unique metric reservoir per test run when using Cassandra-wide metrics residing in MBeans (CASSANDRA-13216) http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/columniterator/SSTableReversedIterator.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/rows/RangeTombstoneMarker.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/rows/Unfiltered.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/src/java/org/apache/cassandra/db/rows/UnfilteredSerializer.java -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c0ac928d/test/unit/org/apache/cassandra/cql3/validation/operations/AlterTest.java --
[1/6] cassandra git commit: Dropping column results in "corrupt" SSTable
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 631162271 -> 5262bb17b refs/heads/cassandra-3.11 ee7023e32 -> c0ac928d9 refs/heads/trunk 23cd27fcf -> 3dabeeaa2 Dropping column results in "corrupt" SSTable patch by Sylvain Lebresne; reviewed by Alex Petrov for CASSANDRA-13337 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5262bb17 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5262bb17 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5262bb17 Branch: refs/heads/cassandra-3.0 Commit: 5262bb17b46fc8c02f9f836ddf9317d0de2698cd Parents: 6311622 Author: Sylvain LebresneAuthored: Mon Mar 20 15:49:27 2017 +0100 Committer: Sylvain Lebresne Committed: Mon Mar 27 11:58:32 2017 +0200 -- CHANGES.txt | 1 + .../db/columniterator/SSTableIterator.java | 78 .../columniterator/SSTableReversedIterator.java | 3 +- .../cassandra/db/rows/RangeTombstoneMarker.java | 6 ++ .../apache/cassandra/db/rows/Unfiltered.java| 2 + .../cassandra/db/rows/UnfilteredSerializer.java | 43 +-- .../cql3/validation/operations/AlterTest.java | 51 + 7 files changed, 144 insertions(+), 40 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5262bb17/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 2c5573a..0b1bb01 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Dropping column results in "corrupt" SSTable (CASSANDRA-13337) * Bugs handling range tombstones in the sstable iterators (CASSANDRA-13340) * Fix CONTAINS filtering for null collections (CASSANDRA-13246) * Applying: Use a unique metric reservoir per test run when using Cassandra-wide metrics residing in MBeans (CASSANDRA-13216) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5262bb17/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index 9bcca48..fa337c0 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -123,20 +123,27 @@ public class SSTableIterator extends AbstractSSTableIterator { assert deserializer != null; -// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. -// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those -// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound -// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because -// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it means it's exactly -// our slice end, but in that case we will properly close the range tombstone anyway as part of our "close -// an open marker" code in hasNextInterna -if (!deserializer.hasNext() || deserializer.compareNextTo(end) >= 0) -return null; - -Unfiltered next = deserializer.readNext(); -if (next.kind() == Unfiltered.Kind.RANGE_TOMBSTONE_MARKER) -updateOpenMarker((RangeTombstoneMarker)next); -return next; +while (true) +{ +// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. +// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those +// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound +// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because +// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it means it's exactly +// our slice end, but in that case we will properly close the range tombstone anyway as part of our "close +// an open marker" code in hasNextInterna +if (!deserializer.hasNext() || deserializer.compareNextTo(end) >= 0) +return null; + +Unfiltered next = deserializer.readNext(); +// We may get empty row for the same reason expressed on UnfilteredSerializer.deserializeOne. +
[3/3] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Bugs handling range tombstones in the sstable iterators Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9330409a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9330409a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9330409a Branch: refs/heads/trunk Commit: 9330409accf0506526d25e17e70f89e5cb6a341e Parents: ea662ce a85eeef Author: Sylvain LebresneAuthored: Thu Mar 23 17:18:36 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 23 17:18:36 2017 +0100 -- --
[2/3] cassandra git commit: Bugs handling range tombstones in the sstable iterators
Bugs handling range tombstones in the sstable iterators patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13340 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a85eeefe Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a85eeefe Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a85eeefe Branch: refs/heads/trunk Commit: a85eeefe88eb036a9cd9fa85a1c8c31c2bfad78a Parents: 3e95c5b Author: Sylvain LebresneAuthored: Thu Mar 16 17:05:15 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 23 17:17:16 2017 +0100 -- CHANGES.txt | 1 + .../apache/cassandra/db/ClusteringPrefix.java | 2 +- .../cassandra/db/UnfilteredDeserializer.java| 1 - .../db/columniterator/SSTableIterator.java | 11 +- .../columniterator/SSTableReversedIterator.java | 126 +++ .../cql3/validation/operations/DeleteTest.java | 70 +++ 6 files changed, 181 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index c58fad8..728e3e7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -13,6 +13,7 @@ * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) * Address message coalescing regression (CASSANDRA-12676) Merged from 3.0: + * Bugs handling range tombstones in the sstable iterators (CASSANDRA-13340) * Fix CONTAINS filtering for null collections (CASSANDRA-13246) * Applying: Use a unique metric reservoir per test run when using Cassandra-wide metrics residing in MBeans (CASSANDRA-13216) * Propagate row deletions in 2i tables on upgrade (CASSANDRA-13320) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/src/java/org/apache/cassandra/db/ClusteringPrefix.java -- diff --git a/src/java/org/apache/cassandra/db/ClusteringPrefix.java b/src/java/org/apache/cassandra/db/ClusteringPrefix.java index 340e237..1ecc92d 100644 --- a/src/java/org/apache/cassandra/db/ClusteringPrefix.java +++ b/src/java/org/apache/cassandra/db/ClusteringPrefix.java @@ -482,7 +482,7 @@ public interface ClusteringPrefix extends IMeasurableMemory, Clusterable } if (bound.size() == nextSize) -return nextKind.compareTo(bound.kind()); +return Kind.compare(nextKind, bound.kind()); // We know that we'll have exited already if nextSize < bound.size return -bound.kind().comparedToClustering; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index 79b8636..b977907 100644 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@ -690,6 +690,5 @@ public abstract class UnfilteredDeserializer } } } - } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index b3c2e94..e21bd72 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -138,7 +138,14 @@ public class SSTableIterator extends AbstractSSTableIterator { assert deserializer != null; -if (!deserializer.hasNext() || deserializer.compareNextTo(end) > 0) +// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. +// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those +// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound +// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because +// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it means it's exactly +// our slice end, but in that case we will properly close the range tombstone anyway as part of our "close +
[1/3] cassandra git commit: Bugs handling range tombstones in the sstable iterators
Repository: cassandra Updated Branches: refs/heads/cassandra-3.11 3e95c5b0c -> a85eeefe8 refs/heads/trunk ea662ce21 -> 9330409ac Bugs handling range tombstones in the sstable iterators patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13340 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a85eeefe Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a85eeefe Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a85eeefe Branch: refs/heads/cassandra-3.11 Commit: a85eeefe88eb036a9cd9fa85a1c8c31c2bfad78a Parents: 3e95c5b Author: Sylvain LebresneAuthored: Thu Mar 16 17:05:15 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 23 17:17:16 2017 +0100 -- CHANGES.txt | 1 + .../apache/cassandra/db/ClusteringPrefix.java | 2 +- .../cassandra/db/UnfilteredDeserializer.java| 1 - .../db/columniterator/SSTableIterator.java | 11 +- .../columniterator/SSTableReversedIterator.java | 126 +++ .../cql3/validation/operations/DeleteTest.java | 70 +++ 6 files changed, 181 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index c58fad8..728e3e7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -13,6 +13,7 @@ * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) * Address message coalescing regression (CASSANDRA-12676) Merged from 3.0: + * Bugs handling range tombstones in the sstable iterators (CASSANDRA-13340) * Fix CONTAINS filtering for null collections (CASSANDRA-13246) * Applying: Use a unique metric reservoir per test run when using Cassandra-wide metrics residing in MBeans (CASSANDRA-13216) * Propagate row deletions in 2i tables on upgrade (CASSANDRA-13320) http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/src/java/org/apache/cassandra/db/ClusteringPrefix.java -- diff --git a/src/java/org/apache/cassandra/db/ClusteringPrefix.java b/src/java/org/apache/cassandra/db/ClusteringPrefix.java index 340e237..1ecc92d 100644 --- a/src/java/org/apache/cassandra/db/ClusteringPrefix.java +++ b/src/java/org/apache/cassandra/db/ClusteringPrefix.java @@ -482,7 +482,7 @@ public interface ClusteringPrefix extends IMeasurableMemory, Clusterable } if (bound.size() == nextSize) -return nextKind.compareTo(bound.kind()); +return Kind.compare(nextKind, bound.kind()); // We know that we'll have exited already if nextSize < bound.size return -bound.kind().comparedToClustering; http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index 79b8636..b977907 100644 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@ -690,6 +690,5 @@ public abstract class UnfilteredDeserializer } } } - } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/a85eeefe/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java -- diff --git a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java index b3c2e94..e21bd72 100644 --- a/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java +++ b/src/java/org/apache/cassandra/db/columniterator/SSTableIterator.java @@ -138,7 +138,14 @@ public class SSTableIterator extends AbstractSSTableIterator { assert deserializer != null; -if (!deserializer.hasNext() || deserializer.compareNextTo(end) > 0) +// We use a same reasoning as in handlePreSliceData regarding the strictness of the inequality below. +// We want to exclude deserialized unfiltered equal to end, because 1) we won't miss any rows since those +// woudn't be equal to a slice bound and 2) a end bound can be equal to a start bound +// (EXCL_END(x) == INCL_START(x) for instance) and in that case we don't want to return start bound because +// it's fundamentally excluded. And if the bound is a end (for a range tombstone), it
[1/3] cassandra git commit: Possible AssertionError in UnfilteredRowIteratorWithLowerBound
Repository: cassandra Updated Branches: refs/heads/cassandra-3.11 ec9ce3dfb -> f55cb88ab refs/heads/trunk 8b74ae4b6 -> a87b15d1d Possible AssertionError in UnfilteredRowIteratorWithLowerBound patch by Sylvain Lebresne; reviewed by Stefania for CASSANDRA-13366 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f55cb88a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f55cb88a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f55cb88a Branch: refs/heads/cassandra-3.11 Commit: f55cb88ab595ccb941ebb4a088ab90f860f463d5 Parents: ec9ce3d Author: Sylvain LebresneAuthored: Wed Mar 22 15:41:49 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 23 10:26:37 2017 +0100 -- CHANGES.txt | 1 + .../db/SinglePartitionReadCommand.java | 4 +-- .../db/compaction/CompactionController.java | 2 +- .../UnfilteredRowIteratorWithLowerBound.java| 31 ++--- .../io/sstable/format/SSTableReader.java| 35 5 files changed, 44 insertions(+), 29 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 8386c20..f4e48ff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.11.0 + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) * Support unaligned memory access for AArch64 (CASSANDRA-13326) * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java -- diff --git a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java index f6d10f5..724f59e 100644 --- a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java +++ b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java @@ -584,7 +584,7 @@ public class SinglePartitionReadCommand extends ReadCommand if (!shouldInclude(sstable)) { nonIntersectingSSTables++; -if (sstable.hasTombstones()) +if (sstable.mayHaveTombstones()) { // if sstable has tombstones we need to check after one pass if it can be safely skipped if (skippedSSTablesWithTombstones == null) skippedSSTablesWithTombstones = new ArrayList<>(); @@ -773,7 +773,7 @@ public class SinglePartitionReadCommand extends ReadCommand // however: if it is set, it impacts everything and must be included. Getting that top-level partition deletion costs us // some seek in general however (unless the partition is indexed and is in the key cache), so we first check if the sstable // has any tombstone at all as a shortcut. -if (!sstable.hasTombstones()) +if (!sstable.mayHaveTombstones()) continue; // no tombstone at all, we can skip that sstable // We need to get the partition deletion and include it if it's live. In any case though, we're done with that sstable. http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/src/java/org/apache/cassandra/db/compaction/CompactionController.java -- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionController.java b/src/java/org/apache/cassandra/db/compaction/CompactionController.java index 64c35d9..bf3647a 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java @@ -297,7 +297,7 @@ public class CompactionController implements AutoCloseable { if (reader.isMarkedSuspect() || reader.getMaxTimestamp() <= minTimestamp || -tombstoneOnly && !reader.hasTombstones()) +tombstoneOnly && !reader.mayHaveTombstones()) return null; RowIndexEntry position = reader.getPosition(key, SSTableReader.Operator.EQ); if (position == null) http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/src/java/org/apache/cassandra/db/rows/UnfilteredRowIteratorWithLowerBound.java -- diff --git
[3/3] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Possible AssertionError in UnfilteredRowIteratorWithLowerBound Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a87b15d1 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a87b15d1 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a87b15d1 Branch: refs/heads/trunk Commit: a87b15d1d6c42f4247c84b460ed39899d8813a6f Parents: 8b74ae4 f55cb88 Author: Sylvain LebresneAuthored: Thu Mar 23 10:29:59 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 23 10:29:59 2017 +0100 -- CHANGES.txt | 1 + .../db/SinglePartitionReadCommand.java | 4 +-- .../db/compaction/CompactionController.java | 2 +- .../UnfilteredRowIteratorWithLowerBound.java| 30 +++--- .../io/sstable/format/SSTableReader.java| 33 +++- 5 files changed, 42 insertions(+), 28 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a87b15d1/CHANGES.txt -- diff --cc CHANGES.txt index b68e51c,f4e48ff..c1d5e94 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,50 -1,5 +1,51 @@@ +4.0 + * Cleanup ParentRepairSession after repairs (CASSANDRA-13359) + * Incremental repair not streaming correct sstables (CASSANDRA-13328) + * Upgrade the jna version to 4.3.0 (CASSANDRA-13300) + * Add the currentTimestamp, currentDate, currentTime and currentTimeUUID functions (CASSANDRA-13132) + * Remove config option index_interval (CASSANDRA-10671) + * Reduce lock contention for collection types and serializers (CASSANDRA-13271) + * Make it possible to override MessagingService.Verb ids (CASSANDRA-13283) + * Avoid synchronized on prepareForRepair in ActiveRepairService (CASSANDRA-9292) + * Adds the ability to use uncompressed chunks in compressed files (CASSANDRA-10520) + * Don't flush sstables when streaming for incremental repair (CASSANDRA-13226) + * Remove unused method (CASSANDRA-13227) + * Fix minor bugs related to #9143 (CASSANDRA-13217) + * Output warning if user increases RF (CASSANDRA-13079) + * Remove pre-3.0 streaming compatibility code for 4.0 (CASSANDRA-13081) + * Add support for + and - operations on dates (CASSANDRA-11936) + * Fix consistency of incrementally repaired data (CASSANDRA-9143) + * Increase commitlog version (CASSANDRA-13161) + * Make TableMetadata immutable, optimize Schema (CASSANDRA-9425) + * Refactor ColumnCondition (CASSANDRA-12981) + * Parallelize streaming of different keyspaces (CASSANDRA-4663) + * Improved compactions metrics (CASSANDRA-13015) + * Speed-up start-up sequence by avoiding un-needed flushes (CASSANDRA-13031) + * Use Caffeine (W-TinyLFU) for on-heap caches (CASSANDRA-10855) + * Thrift removal (CASSANDRA-5) + * Remove pre-3.0 compatibility code for 4.0 (CASSANDRA-12716) + * Add column definition kind to dropped columns in schema (CASSANDRA-12705) + * Add (automate) Nodetool Documentation (CASSANDRA-12672) + * Update bundled cqlsh python driver to 3.7.0 (CASSANDRA-12736) + * Reject invalid replication settings when creating or altering a keyspace (CASSANDRA-12681) + * Clean up the SSTableReader#getScanner API wrt removal of RateLimiter (CASSANDRA-12422) + * Use new token allocation for non bootstrap case as well (CASSANDRA-13080) + * Avoid byte-array copy when key cache is disabled (CASSANDRA-13084) + * Require forceful decommission if number of nodes is less than replication factor (CASSANDRA-12510) + * Allow IN restrictions on column families with collections (CASSANDRA-12654) + * Log message size in trace message in OutboundTcpConnection (CASSANDRA-13028) + * Add timeUnit Days for cassandra-stress (CASSANDRA-13029) + * Add mutation size and batch metrics (CASSANDRA-12649) + * Add method to get size of endpoints to TokenMetadata (CASSANDRA-12999) + * Expose time spent waiting in thread pool queue (CASSANDRA-8398) + * Conditionally update index built status to avoid unnecessary flushes (CASSANDRA-12969) + * cqlsh auto completion: refactor definition of compaction strategy options (CASSANDRA-12946) + * Add support for arithmetic operators (CASSANDRA-11935) + * Add histogram for delay to deliver hints (CASSANDRA-13234) + + 3.11.0 + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) * Support unaligned memory access for AArch64 (CASSANDRA-13326) * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). * Fix equality comparisons of columns using the duration type (CASSANDRA-13174)
[2/3] cassandra git commit: Possible AssertionError in UnfilteredRowIteratorWithLowerBound
Possible AssertionError in UnfilteredRowIteratorWithLowerBound patch by Sylvain Lebresne; reviewed by Stefania for CASSANDRA-13366 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/f55cb88a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/f55cb88a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/f55cb88a Branch: refs/heads/trunk Commit: f55cb88ab595ccb941ebb4a088ab90f860f463d5 Parents: ec9ce3d Author: Sylvain LebresneAuthored: Wed Mar 22 15:41:49 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 23 10:26:37 2017 +0100 -- CHANGES.txt | 1 + .../db/SinglePartitionReadCommand.java | 4 +-- .../db/compaction/CompactionController.java | 2 +- .../UnfilteredRowIteratorWithLowerBound.java| 31 ++--- .../io/sstable/format/SSTableReader.java| 35 5 files changed, 44 insertions(+), 29 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 8386c20..f4e48ff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.11.0 + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) * Support unaligned memory access for AArch64 (CASSANDRA-13326) * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java -- diff --git a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java index f6d10f5..724f59e 100644 --- a/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java +++ b/src/java/org/apache/cassandra/db/SinglePartitionReadCommand.java @@ -584,7 +584,7 @@ public class SinglePartitionReadCommand extends ReadCommand if (!shouldInclude(sstable)) { nonIntersectingSSTables++; -if (sstable.hasTombstones()) +if (sstable.mayHaveTombstones()) { // if sstable has tombstones we need to check after one pass if it can be safely skipped if (skippedSSTablesWithTombstones == null) skippedSSTablesWithTombstones = new ArrayList<>(); @@ -773,7 +773,7 @@ public class SinglePartitionReadCommand extends ReadCommand // however: if it is set, it impacts everything and must be included. Getting that top-level partition deletion costs us // some seek in general however (unless the partition is indexed and is in the key cache), so we first check if the sstable // has any tombstone at all as a shortcut. -if (!sstable.hasTombstones()) +if (!sstable.mayHaveTombstones()) continue; // no tombstone at all, we can skip that sstable // We need to get the partition deletion and include it if it's live. In any case though, we're done with that sstable. http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/src/java/org/apache/cassandra/db/compaction/CompactionController.java -- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionController.java b/src/java/org/apache/cassandra/db/compaction/CompactionController.java index 64c35d9..bf3647a 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java @@ -297,7 +297,7 @@ public class CompactionController implements AutoCloseable { if (reader.isMarkedSuspect() || reader.getMaxTimestamp() <= minTimestamp || -tombstoneOnly && !reader.hasTombstones()) +tombstoneOnly && !reader.mayHaveTombstones()) return null; RowIndexEntry position = reader.getPosition(key, SSTableReader.Operator.EQ); if (position == null) http://git-wip-us.apache.org/repos/asf/cassandra/blob/f55cb88a/src/java/org/apache/cassandra/db/rows/UnfilteredRowIteratorWithLowerBound.java -- diff --git a/src/java/org/apache/cassandra/db/rows/UnfilteredRowIteratorWithLowerBound.java b/src/java/org/apache/cassandra/db/rows/UnfilteredRowIteratorWithLowerBound.java
[2/6] cassandra git commit: Slice.isEmpty() returns false for some empty slices
Slice.isEmpty() returns false for some empty slices patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13305 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/31dec3d5 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/31dec3d5 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/31dec3d5 Branch: refs/heads/cassandra-3.11 Commit: 31dec3d548ae2c76d7c8bf4bffa9d506f670f756 Parents: 60d3292 Author: Sylvain LebresneAuthored: Thu Mar 9 11:58:40 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 9 11:58:40 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/Slice.java | 2 +- .../cql3/validation/operations/DeleteTest.java| 18 ++ 3 files changed, 20 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 0979852..1876922 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Slice.isEmpty() returns false for some empty slices (CASSANDRA-13305) * Add formatted row output to assertEmpty in CQL Tester (CASSANDRA-13238) Merged from 2.2: * Fix GRANT/REVOKE when keyspace isn't specified (CASSANDRA-13053) http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/src/java/org/apache/cassandra/db/Slice.java -- diff --git a/src/java/org/apache/cassandra/db/Slice.java b/src/java/org/apache/cassandra/db/Slice.java index 7fde45e..3c645dc 100644 --- a/src/java/org/apache/cassandra/db/Slice.java +++ b/src/java/org/apache/cassandra/db/Slice.java @@ -160,7 +160,7 @@ public class Slice public static boolean isEmpty(ClusteringComparator comparator, Slice.Bound start, Slice.Bound end) { assert start.isStart() && end.isEnd(); -return comparator.compare(end, start) < 0; +return comparator.compare(end, start) <= 0; } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java -- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java index 09098ac..9d7d4a3 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java @@ -1292,6 +1292,24 @@ public class DeleteTest extends CQLTester } /** + * Test for CASSANDRA-13305 + */ +@Test +public void testWithEmptyRange() throws Throwable +{ +createTable("CREATE TABLE %s (k text, a int, b int, PRIMARY KEY (k, a, b))"); + +// Both of the following should be doing nothing, but before #13305 this inserted broken ranges. We do it twice +// and the follow-up delete mainly as a way to show the bug as the combination of this will trigger an assertion +// in RangeTombstoneList pre-#13305 showing that something wrong happened. +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 1, 1); +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 1, 1); + +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 0, 2); +} + + +/** * Checks if the memtable is empty or not * @return {@code true} if the memtable is empty, {@code false} otherwise. */
[3/6] cassandra git commit: Slice.isEmpty() returns false for some empty slices
Slice.isEmpty() returns false for some empty slices patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13305 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/31dec3d5 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/31dec3d5 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/31dec3d5 Branch: refs/heads/trunk Commit: 31dec3d548ae2c76d7c8bf4bffa9d506f670f756 Parents: 60d3292 Author: Sylvain LebresneAuthored: Thu Mar 9 11:58:40 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 9 11:58:40 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/Slice.java | 2 +- .../cql3/validation/operations/DeleteTest.java| 18 ++ 3 files changed, 20 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 0979852..1876922 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Slice.isEmpty() returns false for some empty slices (CASSANDRA-13305) * Add formatted row output to assertEmpty in CQL Tester (CASSANDRA-13238) Merged from 2.2: * Fix GRANT/REVOKE when keyspace isn't specified (CASSANDRA-13053) http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/src/java/org/apache/cassandra/db/Slice.java -- diff --git a/src/java/org/apache/cassandra/db/Slice.java b/src/java/org/apache/cassandra/db/Slice.java index 7fde45e..3c645dc 100644 --- a/src/java/org/apache/cassandra/db/Slice.java +++ b/src/java/org/apache/cassandra/db/Slice.java @@ -160,7 +160,7 @@ public class Slice public static boolean isEmpty(ClusteringComparator comparator, Slice.Bound start, Slice.Bound end) { assert start.isStart() && end.isEnd(); -return comparator.compare(end, start) < 0; +return comparator.compare(end, start) <= 0; } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java -- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java index 09098ac..9d7d4a3 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java @@ -1292,6 +1292,24 @@ public class DeleteTest extends CQLTester } /** + * Test for CASSANDRA-13305 + */ +@Test +public void testWithEmptyRange() throws Throwable +{ +createTable("CREATE TABLE %s (k text, a int, b int, PRIMARY KEY (k, a, b))"); + +// Both of the following should be doing nothing, but before #13305 this inserted broken ranges. We do it twice +// and the follow-up delete mainly as a way to show the bug as the combination of this will trigger an assertion +// in RangeTombstoneList pre-#13305 showing that something wrong happened. +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 1, 1); +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 1, 1); + +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 0, 2); +} + + +/** * Checks if the memtable is empty or not * @return {@code true} if the memtable is empty, {@code false} otherwise. */
[6/6] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Slice.isEmpty() returns false for some empty slices Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9e8e8914 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9e8e8914 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9e8e8914 Branch: refs/heads/trunk Commit: 9e8e8914d8a4e55a2d647c4c462e1cb7b622a930 Parents: b5a5fbe dc65a57 Author: Sylvain LebresneAuthored: Thu Mar 9 11:59:42 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 9 11:59:42 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/Slice.java | 2 +- .../cql3/validation/operations/DeleteTest.java| 18 ++ 3 files changed, 20 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9e8e8914/CHANGES.txt -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/9e8e8914/src/java/org/apache/cassandra/db/Slice.java --
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Slice.isEmpty() returns false for some empty slices Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dc65a576 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dc65a576 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dc65a576 Branch: refs/heads/trunk Commit: dc65a576553f8766076920c8b639d80763d6e1f5 Parents: 7707a0e 31dec3d Author: Sylvain LebresneAuthored: Thu Mar 9 11:59:32 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 9 11:59:32 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/Slice.java | 2 +- .../cql3/validation/operations/DeleteTest.java| 18 ++ 3 files changed, 20 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc65a576/CHANGES.txt -- diff --cc CHANGES.txt index f73dc12,1876922..2772fc2 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,15 -1,11 +1,16 @@@ -3.0.13 +3.11.0 + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) + * Address message coalescing regression (CASSANDRA-12676) +Merged from 3.0: + * Slice.isEmpty() returns false for some empty slices (CASSANDRA-13305) * Add formatted row output to assertEmpty in CQL Tester (CASSANDRA-13238) -Merged from 2.2: - * Fix GRANT/REVOKE when keyspace isn't specified (CASSANDRA-13053) - - -3.0.12 * Prevent data loss on upgrade 2.1 - 3.0 by adding component separator to LogRecord absolute path (CASSANDRA-13294) * Improve testing on macOS by eliminating sigar logging (CASSANDRA-13233) * Cqlsh copy-from should error out when csv contains invalid data for collections (CASSANDRA-13071) http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc65a576/src/java/org/apache/cassandra/db/Slice.java -- diff --cc src/java/org/apache/cassandra/db/Slice.java index c3da222,3c645dc..4b36677 --- a/src/java/org/apache/cassandra/db/Slice.java +++ b/src/java/org/apache/cassandra/db/Slice.java @@@ -157,10 -157,10 +157,10 @@@ public class Slic * @return whether the slice formed by {@code start} and {@code end} is * empty or not. */ -public static boolean isEmpty(ClusteringComparator comparator, Slice.Bound start, Slice.Bound end) +public static boolean isEmpty(ClusteringComparator comparator, ClusteringBound start, ClusteringBound end) { assert start.isStart() && end.isEnd(); - return comparator.compare(end, start) < 0; + return comparator.compare(end, start) <= 0; } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc65a576/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java --
[1/6] cassandra git commit: Slice.isEmpty() returns false for some empty slices
Repository: cassandra Updated Branches: refs/heads/cassandra-3.0 60d3292b0 -> 31dec3d54 refs/heads/cassandra-3.11 7707a0ed5 -> dc65a5765 refs/heads/trunk b5a5fbe1f -> 9e8e8914d Slice.isEmpty() returns false for some empty slices patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13305 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/31dec3d5 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/31dec3d5 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/31dec3d5 Branch: refs/heads/cassandra-3.0 Commit: 31dec3d548ae2c76d7c8bf4bffa9d506f670f756 Parents: 60d3292 Author: Sylvain LebresneAuthored: Thu Mar 9 11:58:40 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 9 11:58:40 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/Slice.java | 2 +- .../cql3/validation/operations/DeleteTest.java| 18 ++ 3 files changed, 20 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index 0979852..1876922 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.13 + * Slice.isEmpty() returns false for some empty slices (CASSANDRA-13305) * Add formatted row output to assertEmpty in CQL Tester (CASSANDRA-13238) Merged from 2.2: * Fix GRANT/REVOKE when keyspace isn't specified (CASSANDRA-13053) http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/src/java/org/apache/cassandra/db/Slice.java -- diff --git a/src/java/org/apache/cassandra/db/Slice.java b/src/java/org/apache/cassandra/db/Slice.java index 7fde45e..3c645dc 100644 --- a/src/java/org/apache/cassandra/db/Slice.java +++ b/src/java/org/apache/cassandra/db/Slice.java @@ -160,7 +160,7 @@ public class Slice public static boolean isEmpty(ClusteringComparator comparator, Slice.Bound start, Slice.Bound end) { assert start.isStart() && end.isEnd(); -return comparator.compare(end, start) < 0; +return comparator.compare(end, start) <= 0; } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/31dec3d5/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java -- diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java index 09098ac..9d7d4a3 100644 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java @@ -1292,6 +1292,24 @@ public class DeleteTest extends CQLTester } /** + * Test for CASSANDRA-13305 + */ +@Test +public void testWithEmptyRange() throws Throwable +{ +createTable("CREATE TABLE %s (k text, a int, b int, PRIMARY KEY (k, a, b))"); + +// Both of the following should be doing nothing, but before #13305 this inserted broken ranges. We do it twice +// and the follow-up delete mainly as a way to show the bug as the combination of this will trigger an assertion +// in RangeTombstoneList pre-#13305 showing that something wrong happened. +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 1, 1); +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 1, 1); + +execute("DELETE FROM %s WHERE k = ? AND a >= ? AND a < ?", "a", 0, 2); +} + + +/** * Checks if the memtable is empty or not * @return {@code true} if the memtable is empty, {@code false} otherwise. */
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Slice.isEmpty() returns false for some empty slices Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dc65a576 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dc65a576 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dc65a576 Branch: refs/heads/cassandra-3.11 Commit: dc65a576553f8766076920c8b639d80763d6e1f5 Parents: 7707a0e 31dec3d Author: Sylvain LebresneAuthored: Thu Mar 9 11:59:32 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Mar 9 11:59:32 2017 +0100 -- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/Slice.java | 2 +- .../cql3/validation/operations/DeleteTest.java| 18 ++ 3 files changed, 20 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc65a576/CHANGES.txt -- diff --cc CHANGES.txt index f73dc12,1876922..2772fc2 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,15 -1,11 +1,16 @@@ -3.0.13 +3.11.0 + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) + * Address message coalescing regression (CASSANDRA-12676) +Merged from 3.0: + * Slice.isEmpty() returns false for some empty slices (CASSANDRA-13305) * Add formatted row output to assertEmpty in CQL Tester (CASSANDRA-13238) -Merged from 2.2: - * Fix GRANT/REVOKE when keyspace isn't specified (CASSANDRA-13053) - - -3.0.12 * Prevent data loss on upgrade 2.1 - 3.0 by adding component separator to LogRecord absolute path (CASSANDRA-13294) * Improve testing on macOS by eliminating sigar logging (CASSANDRA-13233) * Cqlsh copy-from should error out when csv contains invalid data for collections (CASSANDRA-13071) http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc65a576/src/java/org/apache/cassandra/db/Slice.java -- diff --cc src/java/org/apache/cassandra/db/Slice.java index c3da222,3c645dc..4b36677 --- a/src/java/org/apache/cassandra/db/Slice.java +++ b/src/java/org/apache/cassandra/db/Slice.java @@@ -157,10 -157,10 +157,10 @@@ public class Slic * @return whether the slice formed by {@code start} and {@code end} is * empty or not. */ -public static boolean isEmpty(ClusteringComparator comparator, Slice.Bound start, Slice.Bound end) +public static boolean isEmpty(ClusteringComparator comparator, ClusteringBound start, ClusteringBound end) { assert start.isStart() && end.isEnd(); - return comparator.compare(end, start) < 0; + return comparator.compare(end, start) <= 0; } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/dc65a576/test/unit/org/apache/cassandra/cql3/validation/operations/DeleteTest.java --
[1/2] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.11
Repository: cassandra Updated Branches: refs/heads/trunk 831c05b1c -> 2d8be34a2 Merge branch 'cassandra-3.0' into cassandra-3.11 * cassandra-3.0: Legacy deserializer can create unexpected boundary range tombstones Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1dc1aa19 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1dc1aa19 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1dc1aa19 Branch: refs/heads/trunk Commit: 1dc1aa1982a7ab84034c95fa6ce6b3e4e2346fd2 Parents: 6487876 ab71748 Author: Sylvain LebresneAuthored: Thu Feb 23 14:37:35 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Feb 23 14:37:35 2017 +0100 -- CHANGES.txt | 1 + .../cassandra/db/UnfilteredDeserializer.java| 334 ++- .../cassandra/db/rows/RangeTombstoneMarker.java | 1 - .../apache/cassandra/service/DataResolver.java | 31 +- .../cassandra/db/OldFormatDeserializerTest.java | 110 ++ .../cassandra/service/DataResolverTest.java | 125 ++- 6 files changed, 432 insertions(+), 170 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/1dc1aa19/CHANGES.txt -- diff --cc CHANGES.txt index 233898f,386029e..f5b9d28 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,18 -1,19 +1,19 @@@ -3.0.12 +3.11.0 + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) +Merged from 3.0: + * Legacy deserializer can create unexpected boundary range tombstones (CASSANDRA-13237) * Remove unnecessary assertion from AntiCompactionTest (CASSANDRA-13070) * Fix cqlsh COPY for dates before 1900 (CASSANDRA-13185) -Merged from 2.2 - * Fix flaky LongLeveledCompactionStrategyTest (CASSANDRA-12202) - * Fix failing COPY TO STDOUT (CASSANDRA-12497) - * Fix ColumnCounter::countAll behaviour for reverse queries (CASSANDRA-13222) - * Exceptions encountered calling getSeeds() breaks OTC thread (CASSANDRA-13018) -Merged from 2.1: - * Log stacktrace of uncaught exceptions (CASSANDRA-13108) - -3.0.11 * Use keyspace replication settings on system.size_estimates table (CASSANDRA-9639) * Add vm.max_map_count StartupCheck (CASSANDRA-13008) - * Hint related logging should include the IP address of the destination in addition to + * Hint related logging should include the IP address of the destination in addition to host ID (CASSANDRA-13205) * Reloading logback.xml does not work (CASSANDRA-13173) * Lightweight transactions temporarily fail after upgrade from 2.1 to 3.0 (CASSANDRA-13109) http://git-wip-us.apache.org/repos/asf/cassandra/blob/1dc1aa19/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --cc src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index 2c3bc1b,42a806a..79b8636 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@@ -317,16 -331,7 +331,7 @@@ public abstract class UnfilteredDeseria } } - private boolean isRow(LegacyLayout.LegacyAtom atom) - { - if (atom.isCell()) - return true; - - LegacyLayout.LegacyRangeTombstone tombstone = atom.asRangeTombstone(); - return tombstone.isCollectionTombstone() || tombstone.isRowDeletion(metadata); - } - -public int compareNextTo(Slice.Bound bound) throws IOException +public int compareNextTo(ClusteringBound bound) throws IOException { if (!hasNext()) throw new IllegalStateException(); @@@ -397,13 -405,27 +405,28 @@@ private Unfiltered next; - private UnfilteredIterator(DeletionTime partitionDeletion) + UnfilteredIterator(CFMetaData metadata, +DeletionTime partitionDeletion, +SerializationHelper helper, +Supplier atomReader) { + this.metadata = metadata; + this.helper = helper; this.grouper = new
[2/2] cassandra git commit: Merge branch 'cassandra-3.11' into trunk
Merge branch 'cassandra-3.11' into trunk * cassandra-3.11: Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2d8be34a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2d8be34a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2d8be34a Branch: refs/heads/trunk Commit: 2d8be34a240db84d4368a4d30a2258ca6e67043f Parents: 831c05b 1dc1aa1 Author: Sylvain LebresneAuthored: Thu Feb 23 15:48:25 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Feb 23 15:48:25 2017 +0100 -- --
[2/5] cassandra git commit: Legacy deserializer can create unexpected boundary range tombstones
Legacy deserializer can create unexpected boundary range tombstones patch by Sylvain Lebresne; reviewed by Branimir Lambov for CASSANDRA-13237 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ab717484 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ab717484 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ab717484 Branch: refs/heads/cassandra-3.11 Commit: ab7174849599c62f4bef3cb719c644bae13e9321 Parents: 42977db Author: Sylvain LebresneAuthored: Thu Feb 23 14:32:03 2017 +0100 Committer: Sylvain Lebresne Committed: Thu Feb 23 14:32:34 2017 +0100 -- CHANGES.txt | 1 + .../cassandra/db/UnfilteredDeserializer.java| 343 ++- .../cassandra/db/rows/RangeTombstoneMarker.java | 2 +- .../apache/cassandra/service/DataResolver.java | 31 +- .../cassandra/db/OldFormatDeserializerTest.java | 110 ++ .../cassandra/service/DataResolverTest.java | 129 ++- 6 files changed, 436 insertions(+), 180 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ab717484/CHANGES.txt -- diff --git a/CHANGES.txt b/CHANGES.txt index e978a5c..386029e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0.12 + * Legacy deserializer can create unexpected boundary range tombstones (CASSANDRA-13237) * Remove unnecessary assertion from AntiCompactionTest (CASSANDRA-13070) * Fix cqlsh COPY for dates before 1900 (CASSANDRA-13185) Merged from 2.2 http://git-wip-us.apache.org/repos/asf/cassandra/blob/ab717484/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java -- diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java index a2d51e13..42a806a 100644 --- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java +++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java @@ -20,7 +20,9 @@ package org.apache.cassandra.db; import java.io.IOException; import java.io.IOError; import java.util.*; +import java.util.function.Supplier; +import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Iterables; import com.google.common.collect.PeekingIterator; @@ -265,11 +267,23 @@ public abstract class UnfilteredDeserializer boolean readAllAsDynamic) { super(metadata, in, helper); -this.iterator = new UnfilteredIterator(partitionDeletion); +this.iterator = new UnfilteredIterator(metadata, partitionDeletion, helper, this::readAtom); this.readAllAsDynamic = readAllAsDynamic; this.lastConsumedPosition = currentPosition(); } +private LegacyLayout.LegacyAtom readAtom() +{ +try +{ +return LegacyLayout.readLegacyAtom(metadata, in, readAllAsDynamic); +} +catch (IOException e) +{ +throw new IOError(e); +} +} + public void setSkipStatic() { this.skipStatic = true; @@ -317,15 +331,6 @@ public abstract class UnfilteredDeserializer } } -private boolean isRow(LegacyLayout.LegacyAtom atom) -{ -if (atom.isCell()) -return true; - -LegacyLayout.LegacyRangeTombstone tombstone = atom.asRangeTombstone(); -return tombstone.isCollectionTombstone() || tombstone.isRowDeletion(metadata); -} - public int compareNextTo(Slice.Bound bound) throws IOException { if (!hasNext()) @@ -389,19 +394,36 @@ public abstract class UnfilteredDeserializer // Groups atoms from the input into proper Unfiltered. // Note: this could use guava AbstractIterator except that we want to be able to clear // the internal state of the iterator so it's cleaner to do it ourselves. -private class UnfilteredIterator implements PeekingIterator +@VisibleForTesting +static class UnfilteredIterator implements PeekingIterator { private final AtomIterator atoms; private final LegacyLayout.CellGrouper grouper; private final TombstoneTracker tombstoneTracker; +private final CFMetaData metadata; +private final SerializationHelper helper; private Unfiltered next; -private UnfilteredIterator(DeletionTime partitionDeletion) +UnfilteredIterator(CFMetaData metadata, +