You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sa...@apache.org on 2016/01/14 15:16:40 UTC
[1/6] cassandra git commit: Ensure stale index entries are purged on
read
Repository: cassandra
Updated Branches:
refs/heads/cassandra-3.0 94e7ef177 -> 06960d752
refs/heads/cassandra-3.3 93f652939 -> 10207793d
refs/heads/trunk 367dfd505 -> 512a2fa21
Ensure stale index entries are purged on read
Patch by Sam Tunnicliffe; reviewed by Benedict Elliot Smith for
CASSANDRA-11013
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/06960d75
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/06960d75
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/06960d75
Branch: refs/heads/cassandra-3.0
Commit: 06960d752ab6748ee87ac6743f0d34004e73468a
Parents: 94e7ef1
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jan 14 11:39:30 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jan 14 14:06:43 2016 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../internal/composites/CompositesSearcher.java | 2 +-
test/unit/org/apache/cassandra/Util.java | 32 ++++++++++++++++++++
.../apache/cassandra/db/SecondaryIndexTest.java | 18 +++++++++++
.../org/apache/cassandra/index/StubIndex.java | 27 ++---------------
5 files changed, 54 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a37ec99..143ed2d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.3
+ * Ensure stale index entries are purged during reads (CASSANDRA-11013)
* Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
* Fix UnsupportedOperationException when reading old sstable with range
tombstone (CASSANDRA-10743)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
index b8ed800..765ae4d 100644
--- a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
@@ -242,7 +242,7 @@ public class CompositesSearcher extends CassandraIndexSearcher
}
@Override
- public void onClose()
+ public void onPartitionClose()
{
deleteAllEntries(staleEntries, writeOp, nowInSec);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/Util.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/Util.java b/test/unit/org/apache/cassandra/Util.java
index 8658ff3..7ce8f04 100644
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@ -57,6 +57,7 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.CounterId;
import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.concurrent.OpOrder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -563,4 +564,35 @@ public class Util
return content.hasNext() ? content.next() : endOfData();
}
}
+
+ public static UnfilteredPartitionIterator executeLocally(PartitionRangeReadCommand command,
+ ColumnFamilyStore cfs,
+ ReadOrderGroup orderGroup)
+ {
+ return new InternalPartitionRangeReadCommand(command).queryStorageInternal(cfs, orderGroup);
+ }
+
+ private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
+ {
+
+ private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
+ {
+ super(original.isDigestQuery(),
+ original.digestVersion(),
+ original.isForThrift(),
+ original.metadata(),
+ original.nowInSec(),
+ original.columnFilter(),
+ original.rowFilter(),
+ original.limits(),
+ original.dataRange(),
+ Optional.empty());
+ }
+
+ private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs,
+ ReadOrderGroup orderGroup)
+ {
+ return queryStorage(cfs, orderGroup);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
index 55ab574..bbccc48 100644
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
@@ -37,8 +37,10 @@ import org.apache.cassandra.cql3.statements.IndexTarget;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.partitions.*;
import org.apache.cassandra.db.rows.Row;
+import org.apache.cassandra.db.rows.RowIterator;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.index.Index;
+import org.apache.cassandra.index.internal.CassandraIndex;
import org.apache.cassandra.schema.IndexMetadata;
import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -315,6 +317,8 @@ public class SecondaryIndexTest
true,
false);
assertIndexedNone(cfs, col, 1L);
+ ColumnFamilyStore indexCfs = cfs.indexManager.getAllIndexColumnFamilyStores().iterator().next();
+ assertIndexCfsIsEmpty(indexCfs);
}
@Test
@@ -354,6 +358,9 @@ public class SecondaryIndexTest
// TODO: Figure out why this is re-inserting
keyspace.apply(new RowUpdateBuilder(cfs.metadata, 2, "k1").clustering("c1").add("birthdate", 10l).build(), true, false);
assertIndexedNone(cfs, col, 20l);
+
+ ColumnFamilyStore indexCfs = cfs.indexManager.getAllIndexColumnFamilyStores().iterator().next();
+ assertIndexCfsIsEmpty(indexCfs);
}
// See CASSANDRA-6098
@@ -508,4 +515,15 @@ public class SecondaryIndexTest
assertEquals(count, Util.size(iter));
}
}
+
+ private void assertIndexCfsIsEmpty(ColumnFamilyStore indexCfs)
+ {
+ PartitionRangeReadCommand command = (PartitionRangeReadCommand)Util.cmd(indexCfs).build();
+ try (ReadOrderGroup orderGroup = command.startOrderGroup();
+ PartitionIterator iter = UnfilteredPartitionIterators.filter(Util.executeLocally(command, indexCfs, orderGroup),
+ FBUtilities.nowInSeconds()))
+ {
+ assertFalse(iter.hasNext());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/index/StubIndex.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/StubIndex.java b/test/unit/org/apache/cassandra/index/StubIndex.java
index cd0541f..28ea097 100644
--- a/test/unit/org/apache/cassandra/index/StubIndex.java
+++ b/test/unit/org/apache/cassandra/index/StubIndex.java
@@ -22,6 +22,7 @@ import java.util.*;
import java.util.concurrent.Callable;
import java.util.function.BiFunction;
+import org.apache.cassandra.Util;
import org.apache.cassandra.config.ColumnDefinition;
import org.apache.cassandra.cql3.Operator;
import org.apache.cassandra.db.*;
@@ -193,35 +194,11 @@ public class StubIndex implements Index
public Searcher searcherFor(final ReadCommand command)
{
- return orderGroup -> new InternalPartitionRangeReadCommand((PartitionRangeReadCommand)command)
- .queryStorageInternal(baseCfs, orderGroup);
+ return (orderGroup) -> Util.executeLocally((PartitionRangeReadCommand)command, baseCfs, orderGroup);
}
public BiFunction<PartitionIterator, ReadCommand, PartitionIterator> postProcessorFor(ReadCommand readCommand)
{
return (iter, command) -> iter;
}
-
- private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
- {
-
- private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
- {
- super(original.isDigestQuery(),
- original.digestVersion(),
- original.isForThrift(),
- original.metadata(),
- original.nowInSec(),
- original.columnFilter(),
- original.rowFilter(),
- original.limits(),
- original.dataRange(),
- Optional.empty());
- }
-
- private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs, ReadOrderGroup orderGroup)
- {
- return queryStorage(cfs, orderGroup);
- }
- }
}
[3/6] cassandra git commit: Ensure stale index entries are purged on
read
Posted by sa...@apache.org.
Ensure stale index entries are purged on read
Patch by Sam Tunnicliffe; reviewed by Benedict Elliot Smith for
CASSANDRA-11013
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/06960d75
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/06960d75
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/06960d75
Branch: refs/heads/trunk
Commit: 06960d752ab6748ee87ac6743f0d34004e73468a
Parents: 94e7ef1
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jan 14 11:39:30 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jan 14 14:06:43 2016 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../internal/composites/CompositesSearcher.java | 2 +-
test/unit/org/apache/cassandra/Util.java | 32 ++++++++++++++++++++
.../apache/cassandra/db/SecondaryIndexTest.java | 18 +++++++++++
.../org/apache/cassandra/index/StubIndex.java | 27 ++---------------
5 files changed, 54 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a37ec99..143ed2d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.3
+ * Ensure stale index entries are purged during reads (CASSANDRA-11013)
* Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
* Fix UnsupportedOperationException when reading old sstable with range
tombstone (CASSANDRA-10743)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
index b8ed800..765ae4d 100644
--- a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
@@ -242,7 +242,7 @@ public class CompositesSearcher extends CassandraIndexSearcher
}
@Override
- public void onClose()
+ public void onPartitionClose()
{
deleteAllEntries(staleEntries, writeOp, nowInSec);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/Util.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/Util.java b/test/unit/org/apache/cassandra/Util.java
index 8658ff3..7ce8f04 100644
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@ -57,6 +57,7 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.CounterId;
import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.concurrent.OpOrder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -563,4 +564,35 @@ public class Util
return content.hasNext() ? content.next() : endOfData();
}
}
+
+ public static UnfilteredPartitionIterator executeLocally(PartitionRangeReadCommand command,
+ ColumnFamilyStore cfs,
+ ReadOrderGroup orderGroup)
+ {
+ return new InternalPartitionRangeReadCommand(command).queryStorageInternal(cfs, orderGroup);
+ }
+
+ private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
+ {
+
+ private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
+ {
+ super(original.isDigestQuery(),
+ original.digestVersion(),
+ original.isForThrift(),
+ original.metadata(),
+ original.nowInSec(),
+ original.columnFilter(),
+ original.rowFilter(),
+ original.limits(),
+ original.dataRange(),
+ Optional.empty());
+ }
+
+ private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs,
+ ReadOrderGroup orderGroup)
+ {
+ return queryStorage(cfs, orderGroup);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
index 55ab574..bbccc48 100644
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
@@ -37,8 +37,10 @@ import org.apache.cassandra.cql3.statements.IndexTarget;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.partitions.*;
import org.apache.cassandra.db.rows.Row;
+import org.apache.cassandra.db.rows.RowIterator;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.index.Index;
+import org.apache.cassandra.index.internal.CassandraIndex;
import org.apache.cassandra.schema.IndexMetadata;
import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -315,6 +317,8 @@ public class SecondaryIndexTest
true,
false);
assertIndexedNone(cfs, col, 1L);
+ ColumnFamilyStore indexCfs = cfs.indexManager.getAllIndexColumnFamilyStores().iterator().next();
+ assertIndexCfsIsEmpty(indexCfs);
}
@Test
@@ -354,6 +358,9 @@ public class SecondaryIndexTest
// TODO: Figure out why this is re-inserting
keyspace.apply(new RowUpdateBuilder(cfs.metadata, 2, "k1").clustering("c1").add("birthdate", 10l).build(), true, false);
assertIndexedNone(cfs, col, 20l);
+
+ ColumnFamilyStore indexCfs = cfs.indexManager.getAllIndexColumnFamilyStores().iterator().next();
+ assertIndexCfsIsEmpty(indexCfs);
}
// See CASSANDRA-6098
@@ -508,4 +515,15 @@ public class SecondaryIndexTest
assertEquals(count, Util.size(iter));
}
}
+
+ private void assertIndexCfsIsEmpty(ColumnFamilyStore indexCfs)
+ {
+ PartitionRangeReadCommand command = (PartitionRangeReadCommand)Util.cmd(indexCfs).build();
+ try (ReadOrderGroup orderGroup = command.startOrderGroup();
+ PartitionIterator iter = UnfilteredPartitionIterators.filter(Util.executeLocally(command, indexCfs, orderGroup),
+ FBUtilities.nowInSeconds()))
+ {
+ assertFalse(iter.hasNext());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/index/StubIndex.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/StubIndex.java b/test/unit/org/apache/cassandra/index/StubIndex.java
index cd0541f..28ea097 100644
--- a/test/unit/org/apache/cassandra/index/StubIndex.java
+++ b/test/unit/org/apache/cassandra/index/StubIndex.java
@@ -22,6 +22,7 @@ import java.util.*;
import java.util.concurrent.Callable;
import java.util.function.BiFunction;
+import org.apache.cassandra.Util;
import org.apache.cassandra.config.ColumnDefinition;
import org.apache.cassandra.cql3.Operator;
import org.apache.cassandra.db.*;
@@ -193,35 +194,11 @@ public class StubIndex implements Index
public Searcher searcherFor(final ReadCommand command)
{
- return orderGroup -> new InternalPartitionRangeReadCommand((PartitionRangeReadCommand)command)
- .queryStorageInternal(baseCfs, orderGroup);
+ return (orderGroup) -> Util.executeLocally((PartitionRangeReadCommand)command, baseCfs, orderGroup);
}
public BiFunction<PartitionIterator, ReadCommand, PartitionIterator> postProcessorFor(ReadCommand readCommand)
{
return (iter, command) -> iter;
}
-
- private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
- {
-
- private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
- {
- super(original.isDigestQuery(),
- original.digestVersion(),
- original.isForThrift(),
- original.metadata(),
- original.nowInSec(),
- original.columnFilter(),
- original.rowFilter(),
- original.limits(),
- original.dataRange(),
- Optional.empty());
- }
-
- private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs, ReadOrderGroup orderGroup)
- {
- return queryStorage(cfs, orderGroup);
- }
- }
}
[6/6] cassandra git commit: Merge branch 'cassandra-3.3' into trunk
Posted by sa...@apache.org.
Merge branch 'cassandra-3.3' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/512a2fa2
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/512a2fa2
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/512a2fa2
Branch: refs/heads/trunk
Commit: 512a2fa21fa77bd8780733186747529343176160
Parents: 367dfd5 1020779
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jan 14 14:14:29 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jan 14 14:14:29 2016 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../internal/composites/CompositesSearcher.java | 2 +-
test/unit/org/apache/cassandra/Util.java | 32 ++++++++++++++++++++
.../apache/cassandra/db/SecondaryIndexTest.java | 18 +++++++++++
.../org/apache/cassandra/index/StubIndex.java | 27 ++---------------
5 files changed, 54 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/512a2fa2/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index b2df9f7,447b857..b59f182
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,13 -1,6 +1,14 @@@
+3.4
+ * Simplify row cache invalidation code (CASSANDRA-10396)
+ * Support user-defined compaction through nodetool (CASSANDRA-10660)
+ * Stripe view locks by key and table ID to reduce contention (CASSANDRA-10981)
+ * Add nodetool gettimeout and settimeout commands (CASSANDRA-10953)
+ * Add 3.0 metadata to sstablemetadata output (CASSANDRA-10838)
+
+
3.3
Merged from 3.0:
+ * Ensure stale index entries are purged during reads (CASSANDRA-11013)
* (cqlsh) Also apply --connect-timeout to control connection
timeout (CASSANDRA-10959)
* Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into
cassandra-3.3
Posted by sa...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.3
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10207793
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10207793
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10207793
Branch: refs/heads/trunk
Commit: 10207793da3f8bfaa1348c70f21be744724bd54a
Parents: 93f6529 06960d7
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jan 14 14:13:23 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jan 14 14:13:23 2016 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../internal/composites/CompositesSearcher.java | 2 +-
test/unit/org/apache/cassandra/Util.java | 32 ++++++++++++++++++++
.../apache/cassandra/db/SecondaryIndexTest.java | 18 +++++++++++
.../org/apache/cassandra/index/StubIndex.java | 27 ++---------------
5 files changed, 54 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 85bc100,143ed2d..447b857
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,5 +1,8 @@@
-3.0.3
+3.3
+Merged from 3.0:
+ * Ensure stale index entries are purged during reads (CASSANDRA-11013)
+ * (cqlsh) Also apply --connect-timeout to control connection
+ timeout (CASSANDRA-10959)
* Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
* Fix UnsupportedOperationException when reading old sstable with range
tombstone (CASSANDRA-10743)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/test/unit/org/apache/cassandra/Util.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/Util.java
index 55fa824,7ce8f04..87a07b0
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@@ -571,4 -564,35 +572,35 @@@ public class Uti
return content.hasNext() ? content.next() : endOfData();
}
}
+
+ public static UnfilteredPartitionIterator executeLocally(PartitionRangeReadCommand command,
+ ColumnFamilyStore cfs,
- ReadOrderGroup orderGroup)
++ ReadExecutionController controller)
+ {
- return new InternalPartitionRangeReadCommand(command).queryStorageInternal(cfs, orderGroup);
++ return new InternalPartitionRangeReadCommand(command).queryStorageInternal(cfs, controller);
+ }
+
+ private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
+ {
+
+ private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
+ {
+ super(original.isDigestQuery(),
+ original.digestVersion(),
+ original.isForThrift(),
+ original.metadata(),
+ original.nowInSec(),
+ original.columnFilter(),
+ original.rowFilter(),
+ original.limits(),
+ original.dataRange(),
+ Optional.empty());
+ }
+
+ private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs,
- ReadOrderGroup orderGroup)
++ ReadExecutionController controller)
+ {
- return queryStorage(cfs, orderGroup);
++ return queryStorage(cfs, controller);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
index cfa0e9e,bbccc48..ee01a47
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
@@@ -509,4 -515,15 +516,15 @@@ public class SecondaryIndexTes
assertEquals(count, Util.size(iter));
}
}
+
+ private void assertIndexCfsIsEmpty(ColumnFamilyStore indexCfs)
+ {
+ PartitionRangeReadCommand command = (PartitionRangeReadCommand)Util.cmd(indexCfs).build();
- try (ReadOrderGroup orderGroup = command.startOrderGroup();
- PartitionIterator iter = UnfilteredPartitionIterators.filter(Util.executeLocally(command, indexCfs, orderGroup),
++ try (ReadExecutionController controller = command.executionController();
++ PartitionIterator iter = UnfilteredPartitionIterators.filter(Util.executeLocally(command, indexCfs, controller),
+ FBUtilities.nowInSeconds()))
+ {
+ assertFalse(iter.hasNext());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/test/unit/org/apache/cassandra/index/StubIndex.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/index/StubIndex.java
index 3ab38fd,28ea097..5f9d1f3
--- a/test/unit/org/apache/cassandra/index/StubIndex.java
+++ b/test/unit/org/apache/cassandra/index/StubIndex.java
@@@ -193,8 -194,7 +194,7 @@@ public class StubIndex implements Inde
public Searcher searcherFor(final ReadCommand command)
{
- return orderGroup -> new InternalPartitionRangeReadCommand((PartitionRangeReadCommand)command)
- .queryStorageInternal(baseCfs, orderGroup);
- return (orderGroup) -> Util.executeLocally((PartitionRangeReadCommand)command, baseCfs, orderGroup);
++ return (controller) -> Util.executeLocally((PartitionRangeReadCommand)command, baseCfs, controller);
}
public BiFunction<PartitionIterator, ReadCommand, PartitionIterator> postProcessorFor(ReadCommand readCommand)
[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into
cassandra-3.3
Posted by sa...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.3
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/10207793
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/10207793
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/10207793
Branch: refs/heads/cassandra-3.3
Commit: 10207793da3f8bfaa1348c70f21be744724bd54a
Parents: 93f6529 06960d7
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jan 14 14:13:23 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jan 14 14:13:23 2016 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../internal/composites/CompositesSearcher.java | 2 +-
test/unit/org/apache/cassandra/Util.java | 32 ++++++++++++++++++++
.../apache/cassandra/db/SecondaryIndexTest.java | 18 +++++++++++
.../org/apache/cassandra/index/StubIndex.java | 27 ++---------------
5 files changed, 54 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 85bc100,143ed2d..447b857
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,5 +1,8 @@@
-3.0.3
+3.3
+Merged from 3.0:
+ * Ensure stale index entries are purged during reads (CASSANDRA-11013)
+ * (cqlsh) Also apply --connect-timeout to control connection
+ timeout (CASSANDRA-10959)
* Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
* Fix UnsupportedOperationException when reading old sstable with range
tombstone (CASSANDRA-10743)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/test/unit/org/apache/cassandra/Util.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/Util.java
index 55fa824,7ce8f04..87a07b0
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@@ -571,4 -564,35 +572,35 @@@ public class Uti
return content.hasNext() ? content.next() : endOfData();
}
}
+
+ public static UnfilteredPartitionIterator executeLocally(PartitionRangeReadCommand command,
+ ColumnFamilyStore cfs,
- ReadOrderGroup orderGroup)
++ ReadExecutionController controller)
+ {
- return new InternalPartitionRangeReadCommand(command).queryStorageInternal(cfs, orderGroup);
++ return new InternalPartitionRangeReadCommand(command).queryStorageInternal(cfs, controller);
+ }
+
+ private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
+ {
+
+ private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
+ {
+ super(original.isDigestQuery(),
+ original.digestVersion(),
+ original.isForThrift(),
+ original.metadata(),
+ original.nowInSec(),
+ original.columnFilter(),
+ original.rowFilter(),
+ original.limits(),
+ original.dataRange(),
+ Optional.empty());
+ }
+
+ private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs,
- ReadOrderGroup orderGroup)
++ ReadExecutionController controller)
+ {
- return queryStorage(cfs, orderGroup);
++ return queryStorage(cfs, controller);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
index cfa0e9e,bbccc48..ee01a47
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
@@@ -509,4 -515,15 +516,15 @@@ public class SecondaryIndexTes
assertEquals(count, Util.size(iter));
}
}
+
+ private void assertIndexCfsIsEmpty(ColumnFamilyStore indexCfs)
+ {
+ PartitionRangeReadCommand command = (PartitionRangeReadCommand)Util.cmd(indexCfs).build();
- try (ReadOrderGroup orderGroup = command.startOrderGroup();
- PartitionIterator iter = UnfilteredPartitionIterators.filter(Util.executeLocally(command, indexCfs, orderGroup),
++ try (ReadExecutionController controller = command.executionController();
++ PartitionIterator iter = UnfilteredPartitionIterators.filter(Util.executeLocally(command, indexCfs, controller),
+ FBUtilities.nowInSeconds()))
+ {
+ assertFalse(iter.hasNext());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/10207793/test/unit/org/apache/cassandra/index/StubIndex.java
----------------------------------------------------------------------
diff --cc test/unit/org/apache/cassandra/index/StubIndex.java
index 3ab38fd,28ea097..5f9d1f3
--- a/test/unit/org/apache/cassandra/index/StubIndex.java
+++ b/test/unit/org/apache/cassandra/index/StubIndex.java
@@@ -193,8 -194,7 +194,7 @@@ public class StubIndex implements Inde
public Searcher searcherFor(final ReadCommand command)
{
- return orderGroup -> new InternalPartitionRangeReadCommand((PartitionRangeReadCommand)command)
- .queryStorageInternal(baseCfs, orderGroup);
- return (orderGroup) -> Util.executeLocally((PartitionRangeReadCommand)command, baseCfs, orderGroup);
++ return (controller) -> Util.executeLocally((PartitionRangeReadCommand)command, baseCfs, controller);
}
public BiFunction<PartitionIterator, ReadCommand, PartitionIterator> postProcessorFor(ReadCommand readCommand)
[2/6] cassandra git commit: Ensure stale index entries are purged on
read
Posted by sa...@apache.org.
Ensure stale index entries are purged on read
Patch by Sam Tunnicliffe; reviewed by Benedict Elliot Smith for
CASSANDRA-11013
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/06960d75
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/06960d75
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/06960d75
Branch: refs/heads/cassandra-3.3
Commit: 06960d752ab6748ee87ac6743f0d34004e73468a
Parents: 94e7ef1
Author: Sam Tunnicliffe <sa...@beobal.com>
Authored: Thu Jan 14 11:39:30 2016 +0000
Committer: Sam Tunnicliffe <sa...@beobal.com>
Committed: Thu Jan 14 14:06:43 2016 +0000
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../internal/composites/CompositesSearcher.java | 2 +-
test/unit/org/apache/cassandra/Util.java | 32 ++++++++++++++++++++
.../apache/cassandra/db/SecondaryIndexTest.java | 18 +++++++++++
.../org/apache/cassandra/index/StubIndex.java | 27 ++---------------
5 files changed, 54 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a37ec99..143ed2d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.3
+ * Ensure stale index entries are purged during reads (CASSANDRA-11013)
* Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
* Fix UnsupportedOperationException when reading old sstable with range
tombstone (CASSANDRA-10743)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
index b8ed800..765ae4d 100644
--- a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
@@ -242,7 +242,7 @@ public class CompositesSearcher extends CassandraIndexSearcher
}
@Override
- public void onClose()
+ public void onPartitionClose()
{
deleteAllEntries(staleEntries, writeOp, nowInSec);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/Util.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/Util.java b/test/unit/org/apache/cassandra/Util.java
index 8658ff3..7ce8f04 100644
--- a/test/unit/org/apache/cassandra/Util.java
+++ b/test/unit/org/apache/cassandra/Util.java
@@ -57,6 +57,7 @@ import org.apache.cassandra.service.StorageService;
import org.apache.cassandra.utils.ByteBufferUtil;
import org.apache.cassandra.utils.CounterId;
import org.apache.cassandra.utils.FBUtilities;
+import org.apache.cassandra.utils.concurrent.OpOrder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -563,4 +564,35 @@ public class Util
return content.hasNext() ? content.next() : endOfData();
}
}
+
+ public static UnfilteredPartitionIterator executeLocally(PartitionRangeReadCommand command,
+ ColumnFamilyStore cfs,
+ ReadOrderGroup orderGroup)
+ {
+ return new InternalPartitionRangeReadCommand(command).queryStorageInternal(cfs, orderGroup);
+ }
+
+ private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
+ {
+
+ private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
+ {
+ super(original.isDigestQuery(),
+ original.digestVersion(),
+ original.isForThrift(),
+ original.metadata(),
+ original.nowInSec(),
+ original.columnFilter(),
+ original.rowFilter(),
+ original.limits(),
+ original.dataRange(),
+ Optional.empty());
+ }
+
+ private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs,
+ ReadOrderGroup orderGroup)
+ {
+ return queryStorage(cfs, orderGroup);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
index 55ab574..bbccc48 100644
--- a/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
+++ b/test/unit/org/apache/cassandra/db/SecondaryIndexTest.java
@@ -37,8 +37,10 @@ import org.apache.cassandra.cql3.statements.IndexTarget;
import org.apache.cassandra.db.marshal.AbstractType;
import org.apache.cassandra.db.partitions.*;
import org.apache.cassandra.db.rows.Row;
+import org.apache.cassandra.db.rows.RowIterator;
import org.apache.cassandra.exceptions.ConfigurationException;
import org.apache.cassandra.index.Index;
+import org.apache.cassandra.index.internal.CassandraIndex;
import org.apache.cassandra.schema.IndexMetadata;
import org.apache.cassandra.schema.KeyspaceParams;
import org.apache.cassandra.utils.ByteBufferUtil;
@@ -315,6 +317,8 @@ public class SecondaryIndexTest
true,
false);
assertIndexedNone(cfs, col, 1L);
+ ColumnFamilyStore indexCfs = cfs.indexManager.getAllIndexColumnFamilyStores().iterator().next();
+ assertIndexCfsIsEmpty(indexCfs);
}
@Test
@@ -354,6 +358,9 @@ public class SecondaryIndexTest
// TODO: Figure out why this is re-inserting
keyspace.apply(new RowUpdateBuilder(cfs.metadata, 2, "k1").clustering("c1").add("birthdate", 10l).build(), true, false);
assertIndexedNone(cfs, col, 20l);
+
+ ColumnFamilyStore indexCfs = cfs.indexManager.getAllIndexColumnFamilyStores().iterator().next();
+ assertIndexCfsIsEmpty(indexCfs);
}
// See CASSANDRA-6098
@@ -508,4 +515,15 @@ public class SecondaryIndexTest
assertEquals(count, Util.size(iter));
}
}
+
+ private void assertIndexCfsIsEmpty(ColumnFamilyStore indexCfs)
+ {
+ PartitionRangeReadCommand command = (PartitionRangeReadCommand)Util.cmd(indexCfs).build();
+ try (ReadOrderGroup orderGroup = command.startOrderGroup();
+ PartitionIterator iter = UnfilteredPartitionIterators.filter(Util.executeLocally(command, indexCfs, orderGroup),
+ FBUtilities.nowInSeconds()))
+ {
+ assertFalse(iter.hasNext());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/06960d75/test/unit/org/apache/cassandra/index/StubIndex.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/index/StubIndex.java b/test/unit/org/apache/cassandra/index/StubIndex.java
index cd0541f..28ea097 100644
--- a/test/unit/org/apache/cassandra/index/StubIndex.java
+++ b/test/unit/org/apache/cassandra/index/StubIndex.java
@@ -22,6 +22,7 @@ import java.util.*;
import java.util.concurrent.Callable;
import java.util.function.BiFunction;
+import org.apache.cassandra.Util;
import org.apache.cassandra.config.ColumnDefinition;
import org.apache.cassandra.cql3.Operator;
import org.apache.cassandra.db.*;
@@ -193,35 +194,11 @@ public class StubIndex implements Index
public Searcher searcherFor(final ReadCommand command)
{
- return orderGroup -> new InternalPartitionRangeReadCommand((PartitionRangeReadCommand)command)
- .queryStorageInternal(baseCfs, orderGroup);
+ return (orderGroup) -> Util.executeLocally((PartitionRangeReadCommand)command, baseCfs, orderGroup);
}
public BiFunction<PartitionIterator, ReadCommand, PartitionIterator> postProcessorFor(ReadCommand readCommand)
{
return (iter, command) -> iter;
}
-
- private static final class InternalPartitionRangeReadCommand extends PartitionRangeReadCommand
- {
-
- private InternalPartitionRangeReadCommand(PartitionRangeReadCommand original)
- {
- super(original.isDigestQuery(),
- original.digestVersion(),
- original.isForThrift(),
- original.metadata(),
- original.nowInSec(),
- original.columnFilter(),
- original.rowFilter(),
- original.limits(),
- original.dataRange(),
- Optional.empty());
- }
-
- private UnfilteredPartitionIterator queryStorageInternal(ColumnFamilyStore cfs, ReadOrderGroup orderGroup)
- {
- return queryStorage(cfs, orderGroup);
- }
- }
}