(cassandra) 13/16: Accord: NPE in RangeDeps.forEach
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 87c4bf73dc9d03d88dee203a5e11b958cdab2b34 Author: ci worker AuthorDate: Wed May 1 09:12:03 2024 -0700 Accord: NPE in RangeDeps.forEach patch by Benedict Elliott Smith, David Capwell; reviewed by Benedict Elliott Smith for CASSANDRA-19605 --- modules/accord | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/accord b/modules/accord index 3aaec7566e..202e673583 16 --- a/modules/accord +++ b/modules/accord @@ -1 +1 @@ -Subproject commit 3aaec7566e389a0037b93b748867886fb68a0fd0 +Subproject commit 202e67358396a1e413e29498bea71047bd586d06 - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) 07/16: (Accord) Cassandra bootstrap no longer using the range txn and instead uses the sync point empty txn for reads
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit ac0e1bf7e873bf4ae750b00b1d0c2967bac1aeec Author: David Capwell AuthorDate: Mon Apr 1 10:16:27 2024 -0700 (Accord) Cassandra bootstrap no longer using the range txn and instead uses the sync point empty txn for reads patch by David Capwell; reviewed by Blake Eggleston for CASSANDRA-19503 --- modules/accord | 2 +- .../cassandra/service/accord/AccordJournal.java| 10 ++ .../service/accord/AccordMessageSink.java | 2 ++ .../test/accord/AccordBootstrapTest.java | 2 +- .../cassandra/service/accord/MockJournal.java | 39 -- 5 files changed, 42 insertions(+), 13 deletions(-) diff --git a/modules/accord b/modules/accord index f78d1da27b..1a5cb4f100 16 --- a/modules/accord +++ b/modules/accord @@ -1 +1 @@ -Subproject commit f78d1da27b09f89417dd29bde0529f12cd744e3d +Subproject commit 1a5cb4f10002fb3650ad464b3a77664f18e2a901 diff --git a/src/java/org/apache/cassandra/service/accord/AccordJournal.java b/src/java/org/apache/cassandra/service/accord/AccordJournal.java index 0562da1139..b659cf4733 100644 --- a/src/java/org/apache/cassandra/service/accord/AccordJournal.java +++ b/src/java/org/apache/cassandra/service/accord/AccordJournal.java @@ -1408,6 +1408,7 @@ public class AccordJournal implements IJournal, Shutdownable return presentMessages; } +@Override public Set all() { Set types = EnumSet.allOf(Type.class); @@ -1514,6 +1515,15 @@ public class AccordJournal implements IJournal, Shutdownable return confirmed; } +@Override +public Set all() +{ +logger.debug("Checking all messages for {}", txnId); +Set confirmed = provider.all(); +logger.debug("Confirmed {} messages for {}", confirmed, txnId); +return confirmed; +} + @Override public PreAccept preAccept() { diff --git a/src/java/org/apache/cassandra/service/accord/AccordMessageSink.java b/src/java/org/apache/cassandra/service/accord/AccordMessageSink.java index d72644811a..5a514219e3 100644 --- a/src/java/org/apache/cassandra/service/accord/AccordMessageSink.java +++ b/src/java/org/apache/cassandra/service/accord/AccordMessageSink.java @@ -126,6 +126,8 @@ public class AccordMessageSink implements MessageSink builder.put(MessageType.GET_DEPS_RSP, Verb.ACCORD_GET_DEPS_RSP); builder.put(MessageType.GET_EPHEMERAL_READ_DEPS_REQ, Verb.ACCORD_GET_EPHMRL_READ_DEPS_REQ); builder.put(MessageType.GET_EPHEMERAL_READ_DEPS_RSP, Verb.ACCORD_GET_EPHMRL_READ_DEPS_RSP); +builder.put(MessageType.GET_MAX_CONFLICT_REQ, Verb.ACCORD_GET_MAX_CONFLICT_REQ); +builder.put(MessageType.GET_MAX_CONFLICT_RSP, Verb.ACCORD_GET_MAX_CONFLICT_RSP); builder.put(MessageType.COMMIT_SLOW_PATH_REQ, Verb.ACCORD_COMMIT_REQ); builder.put(MessageType.COMMIT_MAXIMAL_REQ, Verb.ACCORD_COMMIT_REQ); builder.put(MessageType.STABLE_FAST_PATH_REQ, Verb.ACCORD_COMMIT_REQ); diff --git a/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java b/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java index f040e9d4db..2241a8c911 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java +++ b/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java @@ -91,7 +91,7 @@ public class AccordBootstrapTest extends TestBaseImpl //withProperty(BOOTSTRAP_SCHEMA_DELAY_MS.getKey(), Integer.toString(90 * 1000), // () -> withProperty("cassandra.join_ring", false, () -> newInstance.startup(cluster))); //newInstance.nodetoolResult("join").asserts().success(); -newInstance.nodetoolResult("describecms").asserts().success(); // just make sure we're joined, remove later +newInstance.nodetoolResult("cms", "describe").asserts().success(); // just make sure we're joined, remove later } private static AccordService service() diff --git a/test/unit/org/apache/cassandra/service/accord/MockJournal.java b/test/unit/org/apache/cassandra/service/accord/MockJournal.java index 575b996e1e..8a68163ede 100644 --- a/test/unit/org/apache/cassandra/service/accord/MockJournal.java +++ b/test/unit/org/apache/cassandra/service/accord/MockJournal.java @@ -18,6 +18,7 @@ package org.apache.cassandra.service.accord; +import
(cassandra) 12/16: Prohibit counter column access in Accord transactions
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit ea61fcd1f1121b3653ab01d232fb7a6098e42ecd Author: Caleb Rackliffe AuthorDate: Fri Apr 26 12:42:45 2024 -0500 Prohibit counter column access in Accord transactions patch by Caleb Rackliffe; reviewed by David Capwell for CASSANDRA-18987 --- CHANGES.txt| 1 + .../cql3/statements/TransactionStatement.java | 16 - .../cql3/statements/TransactionStatementTest.java | 42 +- 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 640c456496..255b8d2df2 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.1 + * Prohibit counter column access in Accord transactions (CASSANDRA-18987) * Add Accord configuration stub (CASSANDRA-18221) * Improve transaction statement validation (CASSANDRA-18302) * Add support for prepared statements for accord transactions (CASSANDRA-18299) diff --git a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java index 68a8fd13f2..f2266557e9 100644 --- a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java @@ -87,6 +87,7 @@ import static accord.primitives.Txn.Kind.Read; import static org.apache.cassandra.cql3.statements.RequestValidations.checkFalse; import static org.apache.cassandra.cql3.statements.RequestValidations.checkNotNull; import static org.apache.cassandra.cql3.statements.RequestValidations.checkTrue; +import static org.apache.cassandra.cql3.statements.RequestValidations.invalidRequest; import static org.apache.cassandra.service.accord.txn.TxnRead.createTxnRead; import static org.apache.cassandra.service.accord.txn.TxnResult.Kind.retry_new_protocol; import static org.apache.cassandra.utils.Clock.Global.nanoTime; @@ -99,6 +100,7 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, public static final String INCOMPLETE_PRIMARY_KEY_SELECT_MESSAGE = "SELECT must specify either all primary key elements or all partition key elements and LIMIT 1. In both cases partition key elements must be always specified with equality operators; %s %s"; public static final String NO_CONDITIONS_IN_UPDATES_MESSAGE = "Updates within transactions may not specify their own conditions; %s statement %s"; public static final String NO_TIMESTAMPS_IN_UPDATES_MESSAGE = "Updates within transactions may not specify custom timestamps; %s statement %s"; +public static final String NO_COUNTERS_IN_TXNS_MESSAGE = "Counter columns cannot be accessed within a transaction; %s statement %s"; public static final String EMPTY_TRANSACTION_MESSAGE = "Transaction contains no reads or writes"; public static final String SELECT_REFS_NEED_COLUMN_MESSAGE = "SELECT references must specify a column."; public static final String TRANSACTIONS_DISABLED_MESSAGE = "Accord transactions are disabled. (See accord.enabled in cassandra.yaml)"; @@ -518,6 +520,10 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, checkTrue(selectNames.add(name), DUPLICATE_TUPLE_NAME_MESSAGE, name.name()); SelectStatement prepared = select.prepare(bindVariables); + +if (prepared.table.isCounter()) +throw invalidRequest(NO_COUNTERS_IN_TXNS_MESSAGE, "SELECT", prepared.source); + NamedSelect namedSelect = new NamedSelect(name, prepared); checkAtMostOneRowSpecified(namedSelect.select, "LET assignment " + name.name()); preparedAssignments.add(namedSelect); @@ -531,7 +537,12 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, NamedSelect returningSelect = null; if (select != null) { -returningSelect = new NamedSelect(TxnDataName.returning(), select.prepare(bindVariables)); +SelectStatement prepared = select.prepare(bindVariables); + +if (prepared.table.isCounter()) +throw invalidRequest(NO_COUNTERS_IN_TXNS_MESSAGE, "SELECT", prepared.source); + +returningSelect = new NamedSelect(TxnDataName.returning(), prepared); checkAtMostOneRowSpecified(returningSelect.select, "returning select"); } @@ -556,6 +567,9 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, checkFalse(prepared.hasConditions(), NO_CONDITIONS_IN_UPDATES_MESSAGE, prepared.type, prepared.so
(cassandra) 16/16: changing accord submodule branch back to trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 681651a4f03344b87df264e3ac092df1527184de Author: Caleb Rackliffe AuthorDate: Fri May 10 09:48:55 2024 -0500 changing accord submodule branch back to trunk --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index da620237a6..60a9510e7a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "modules/accord"] path = modules/accord url = ../cassandra-accord.git - branch = accord-IR + branch = trunk - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cep-15-accord updated (58bc444d05 -> 681651a4f0)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git omit 58bc444d05 Accord: NPE in RangeDeps.forEach omit c876f6a01d Prohibit counter column access in Accord transactions omit d8174c7105 CEP-15 (C*) Integrate accord with repair omit a5b8c06bb9 When jvm-dtest is shutting down an instance TCM retries block the shutdown causing the test to fail omit 6d30457aed fix read repair tests omit 9c35158f6a AccordGens.rangeDeps did not enforce unique ranges, which caused tests to fail omit 63f39562ec (Accord) Cassandra bootstrap no longer using the range txn and instead uses the sync point empty txn for reads omit 53aaac0e37 revert async message delivery omit 70a06051be fix ReadCommand.serializedSize omit c42e155518 Accord: PreLoadContext must properly and consistently support ranges omit 548924fdb2 Ninja for CASSANDRA-19305: Disable EphemeralRead by default to get benchmarks stable omit 9ca1e1ac2d Ninja for CASSANDRA-19305: Disable EphemeralRead by default to get benchmarks stable omit d4c308a8a6 perf improvements omit c2ef5f60e7 rebase test fixes omit 303de2ff1d rebase test fixes omit cf69177dfa rebase fixes omit 30ce4ed013 rebase fixes omit 5ab02ad144 rebase - fix cache metrics omit 7bc74f6a5c fix MultiElementType pack/unpack accessor api omit 26e42ecd87 rebase fixes omit 61002437fe CEP-15: (C*) per-table transactional configuration omit e78dde325b Refactor CommandsForKey for efficiency, and to support transitive dependency elision omit 7af41c66a5 Fast single-partition "Ephemeral Reads" omit c2d4e7c4ac Add TODO for TxnQuery using wrong cluster metadata omit 5c72a68e94 dtest Instance shutdown (again) omit 92705d3785 Fix simulator logging and clean shutdown omit 4b75f582cb Fix (de)serialization of WaitingOn into cache omit 924963d558 Get simulator working (again) omit 79a47a6fcb Fix SerializerSupport.reconstruct, and introduce RangeFactory omit 4f6868d38f CASSANDRA-18365: Protocol fixes omit afc58d771f Fix LocalPartitioner duplication in *_for_key Accord system tables omit 31797823a2 fix fast path test epoch wait omit c08d077b98 load both key command histories for operations specifying keyhistory ALL omit 5948dfa972 fix fast path update deadlock omit 5fe0553c38 don't mark initialized cfk instances as updated omit 0d0ffe3801 apply cfk update to both cfk caches omit 2dc4e4462a don't make noise when fast path reconfigs are rejected omit fc12115549 improve accord error logging omit 4c71211235 fix ReducingRangeMapSerializer omit 2776d34714 retry on Invalidated omit 287fd50d53 fix fast path coordinator test omit 07debc22a1 Pre-requisite changes for CASSANDRA-1 omit 1b5fd65443 Ninja: Added check that command.route is not null when SPL is trying to inform, saw this event in CI and need more details to know what happened omit d2c749321b (Accord): Bug fixes from CASSANDRA-18675 to better support adding keyspaces omit ec992c628e Quick fix for AccordAddTableTest: make rejections catch up omit 40142c9579 (Accord) NPE while trying to serialize FoundKnownMap as value is null half the time but unexpected while serializing omit 87142f8fff Schema based accord fast path configuration omit eeb23fd9ba Fix TombstoneCountWarningTest omit 27aee2edea Don't use ImmediateExectuor in JVM dtests to process messages omit 9e6fbabb97 Fix GuardrailTablesTest omit f66015d409 Instance.receiveMessage should use sync omit 57a803352e Fix StorageAttachedIndexDDLTest failing due to background Accord compactions omit cff60679c9 Add back enforceInvariants=false to shouldCleanup in AccordCommandsPurger omit 0a9dc2cb44 Fix CompactionAccordIteratorsTest omit 8b16431a06 Fix empty row check in command/tfk mutation methods omit 198b719094 Fix AccordCommandsPurger universal durability check omit 374546087e Fix 5.1 rebase bugs omit 7d510d2b4b Fix Mutation serializer omit 55c3a90b11 Fix AccordJournal.Type interop entries omit 3ff08878b6 Fix additional live migration/interop merge issues omit 9866b0f567 Reduce command deps omit 2f6b60aeb8 Ninja for CASSANDRA-19045: use the latest sha from trunk rather than an old one from 10 months ago omit 3fce9c8cda Ninja for CASSANDRA-19045: make sure to use https rather than git@ for submodule so its portable omit 288b744e3b Improve validation and address various discovered faults omit 5b15247947 Quick fix for AccordCommandStoreTest#commandLoadSave() omit ce00bdc6cf Fix Paxos V2 prepare response serialization omit 79b1873da4 Ninja fix SlowMessageFuzzTest and InvertedIndexSearcherTest omit 9839a4021f Accord/non-Accord interoperability omit 657596da2f Accord support for live migration omit
(cassandra) 15/16: make sure StreamSummarySerializer uses the appropriate IPartitioner during deserialization
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit be1015dcc229f20bcd6b8ba5d2f52700d8793f72 Author: Caleb Rackliffe AuthorDate: Thu May 9 14:26:29 2024 -0500 make sure StreamSummarySerializer uses the appropriate IPartitioner during deserialization --- .../dht/IPartitionerDependentSerializer.java | 25 + src/java/org/apache/cassandra/dht/Token.java | 16 + .../io/IVersionedAsymmetricSerializer.java | 6 ++--- .../cassandra/repair/messages/SyncResponse.java| 9 .../apache/cassandra/streaming/SessionSummary.java | 4 ++-- .../streaming/StreamDeserializingTask.java | 3 +-- .../apache/cassandra/streaming/StreamSummary.java | 20 - .../streaming/messages/CompleteMessage.java| 3 +-- .../streaming/messages/IncomingStreamMessage.java | 3 +-- .../streaming/messages/KeepAliveMessage.java | 3 +-- .../streaming/messages/OutgoingStreamMessage.java | 3 +-- .../streaming/messages/PrepareAckMessage.java | 3 +-- .../streaming/messages/PrepareSynAckMessage.java | 5 ++--- .../streaming/messages/PrepareSynMessage.java | 5 ++--- .../streaming/messages/ReceivedMessage.java| 3 +-- .../streaming/messages/SessionFailedMessage.java | 3 +-- .../streaming/messages/StreamInitMessage.java | 3 +-- .../streaming/messages/StreamMessage.java | 7 +++--- .../serialization/5.1/service.SyncComplete.bin | Bin 346 -> 346 bytes .../test/tcm/RepairMetadataKeyspaceTest.java | 2 ++ .../messages/RepairMessageSerializationsTest.java | 19 .../cassandra/service/SerializationsTest.java | 8 --- .../async/StreamingInboundHandlerTest.java | 4 +--- 23 files changed, 86 insertions(+), 71 deletions(-) diff --git a/src/java/org/apache/cassandra/dht/IPartitionerDependentSerializer.java b/src/java/org/apache/cassandra/dht/IPartitionerDependentSerializer.java index 5c75788c0b..a70eb83771 100644 --- a/src/java/org/apache/cassandra/dht/IPartitionerDependentSerializer.java +++ b/src/java/org/apache/cassandra/dht/IPartitionerDependentSerializer.java @@ -19,8 +19,8 @@ package org.apache.cassandra.dht; import java.io.IOException; +import org.apache.cassandra.io.IVersionedSerializer; import org.apache.cassandra.io.util.DataInputPlus; -import org.apache.cassandra.io.util.DataOutputPlus; /** * Versioned serializer where the serialization depends on partitioner. @@ -28,18 +28,8 @@ import org.apache.cassandra.io.util.DataOutputPlus; * On serialization the partitioner is given by the entity being serialized. To deserialize the partitioner used must * be known to the calling method. */ -public interface IPartitionerDependentSerializer +public interface IPartitionerDependentSerializer extends IVersionedSerializer { -/** - * Serialize the specified type into the specified DataOutputStream instance. - * - * @param t type that needs to be serialized - * @param out DataOutput into which serialization needs to happen. - * @param version protocol version - * @throws java.io.IOException if serialization fails - */ -public void serialize(T t, DataOutputPlus out, int version) throws IOException; - /** * Deserialize into the specified DataInputStream instance. * @param in DataInput from which deserialization needs to happen. @@ -51,11 +41,8 @@ public interface IPartitionerDependentSerializer */ public T deserialize(DataInputPlus in, IPartitioner p, int version) throws IOException; -/** - * Calculate serialized size of object without actually serializing. - * @param t object to calculate serialized size - * @param version protocol version - * @return serialized size of object t - */ -public long serializedSize(T t, int version); +default T deserialize(DataInputPlus in, int version) throws IOException +{ +return deserialize(in, null, version); +} } diff --git a/src/java/org/apache/cassandra/dht/Token.java b/src/java/org/apache/cassandra/dht/Token.java index fa886410c6..41c617fbc0 100644 --- a/src/java/org/apache/cassandra/dht/Token.java +++ b/src/java/org/apache/cassandra/dht/Token.java @@ -20,6 +20,12 @@ package org.apache.cassandra.dht; import java.io.IOException; import java.io.Serializable; import java.nio.ByteBuffer; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import com.google.common.collect.Sets; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.apache.cassandra.db.PartitionPosition; import org.apache.cassandra.db.TypeSizes; @@ -35,6 +41,8 @@ import org.apache.cassandra.utils.bytecomparable.ByteSourceInverse; public abstract class Token implements RingPosition, Serializable { +private sta
(cassandra) 14/16: post-rebase fixes, mostly around CASSANDRA-19341 and CASSANDRA-19567
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit e4f9434559cfcb78440f6a07408e687764f5b37e Author: Caleb Rackliffe AuthorDate: Wed May 8 12:24:33 2024 -0500 post-rebase fixes, mostly around CASSANDRA-19341 and CASSANDRA-19567 --- .../cassandra/cql3/conditions/ColumnCondition.java | 2 +- .../cassandra/cql3/statements/SelectStatement.java | 2 -- .../cassandra/cql3/statements/UpdateStatement.java | 2 +- .../org/apache/cassandra/index/accord/IndexMetrics.java | 2 +- .../org/apache/cassandra/index/accord/RouteIndex.java | 3 ++- src/java/org/apache/cassandra/journal/Metrics.java | 6 -- .../cassandra/metrics/AccordStateCacheMetrics.java | 6 +++--- .../org/apache/cassandra/metrics/CacheSizeMetrics.java | 4 ++-- .../cassandra/metrics/CassandraMetricsRegistry.java | 4 src/java/org/apache/cassandra/net/Message.java | 2 +- src/java/org/apache/cassandra/net/MessageDelivery.java | 3 ++- .../org/apache/cassandra/schema/ColumnMetadata.java | 1 + .../cassandra/tcm/StubClusterMetadataService.java | 4 src/java/org/apache/cassandra/tcm/Transformation.java | 1 - test/data/serialization/5.1/service.SyncComplete.bin| Bin 258 -> 346 bytes .../serialization/5.1/service.ValidationComplete.bin| Bin 597 -> 729 bytes .../tcm/listeners/MetadataSnapshotListenerTest.java | 4 +++- 17 files changed, 29 insertions(+), 17 deletions(-) diff --git a/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java b/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java index 52a3642048..387549ea6f 100644 --- a/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java +++ b/src/java/org/apache/cassandra/cql3/conditions/ColumnCondition.java @@ -813,7 +813,7 @@ public abstract class ColumnCondition { int numTerminals = readCollectionSize(in, version); List terminals = new ArrayList<>(numTerminals); -if (operator.isContains() || operator.isContainsKey()) +if (operator == Operator.CONTAINS || operator == Operator.CONTAINS_KEY) { for (int i = 0; i < numTerminals; i++) terminals.add(new Constants.Value(nullableByteBufferSerializer.deserialize(in, version))); diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java index 56c45f70b1..2380e711fc 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -29,7 +29,6 @@ import java.util.List; import java.util.Map; import java.util.NavigableSet; import java.util.Set; -import java.util.SortedSet; import java.util.TreeMap; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -72,7 +71,6 @@ import org.apache.cassandra.cql3.selection.Selector; import org.apache.cassandra.cql3.terms.Marker; import org.apache.cassandra.cql3.terms.Term; import org.apache.cassandra.db.Clustering; -import org.apache.cassandra.db.ClusteringBound; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.ConsistencyLevel; import org.apache.cassandra.db.DataRange; diff --git a/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java b/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java index 9d2ab3d7b7..542609385c 100644 --- a/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/UpdateStatement.java @@ -35,7 +35,7 @@ import org.apache.cassandra.cql3.Operation; import org.apache.cassandra.cql3.Operations; import org.apache.cassandra.cql3.Operator; import org.apache.cassandra.cql3.QualifiedName; -import org.apache.cassandra.cql3.SingleColumnRelation; +import org.apache.cassandra.cql3.Relation; import org.apache.cassandra.cql3.StatementSource; import org.apache.cassandra.cql3.UpdateParameters; import org.apache.cassandra.cql3.VariableSpecifications; diff --git a/src/java/org/apache/cassandra/index/accord/IndexMetrics.java b/src/java/org/apache/cassandra/index/accord/IndexMetrics.java index 2956082235..c761e5f81f 100644 --- a/src/java/org/apache/cassandra/index/accord/IndexMetrics.java +++ b/src/java/org/apache/cassandra/index/accord/IndexMetrics.java @@ -30,7 +30,7 @@ import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics; // Stolen from org.apache.cassandra.index.sai.metrics.AbstractMetrics public class IndexMetrics { -private static final String TYPE = "RouteIndex"; +public static final String TYPE = "RouteIndex"; private static final String SCOPE = "IndexMetrics";
(cassandra) 11/16: CEP-15 (C*) Integrate accord with repair
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 9b308e0a417d011f83db30b23a547417a55ff1f0 Author: Blake Eggleston AuthorDate: Thu Feb 15 10:52:55 2024 -0800 CEP-15 (C*) Integrate accord with repair Patch by Blake Eggleston; Reviewed by Ariel Weisberg and David Capwell for CASSANDRA-19472 --- .gitmodules| 4 +- modules/accord | 2 +- .../config/CassandraRelevantProperties.java| 1 + .../db/streaming/CassandraStreamReceiver.java | 2 +- .../org/apache/cassandra/metrics/TableMetrics.java | 12 +- .../apache/cassandra/repair/AbstractRepairJob.java | 66 .../cassandra/repair/AbstractRepairTask.java | 3 +- .../apache/cassandra/repair/RepairCoordinator.java | 18 + .../{CassandraRepairJob.java => RepairJob.java}| 103 - .../org/apache/cassandra/repair/RepairSession.java | 50 +-- .../cassandra/repair/messages/RepairOption.java| 51 ++- .../cassandra/repair/state/CoordinatorState.java | 4 - .../org/apache/cassandra/schema/TableMetadata.java | 7 + .../cassandra/service/ActiveRepairService.java | 5 +- .../cassandra/service/accord/AccordService.java| 69 +++- .../cassandra/service/accord/IAccordService.java | 8 + .../accord/repair/AccordRepair.java} | 104 -- .../accord/repair/RepairSyncPointAdapter.java | 79 .../accord/repair/RequiredResponseTracker.java | 79 .../accord/serializers/ReadDataSerializers.java| 3 + .../migration/ConsensusMigrationRepairResult.java | 25 +- .../migration/ConsensusMigrationRepairType.java| 5 +- .../migration/ConsensusMigrationTarget.java| 11 + .../migration/ConsensusTableMigration.java | 7 +- ...beFinishConsensusMigrationForTableAndRange.java | 8 +- .../apache/cassandra/tools/nodetool/Repair.java| 4 + .../test/OptimiseStreamsRepairTest.java| 4 +- .../test/accord/AccordIncrementalRepairTest.java | 415 + .../test/accord/AccordMigrationTest.java | 2 +- .../simulator/cluster/OnInstanceRepair.java| 2 +- .../cassandra/repair/FailingRepairFuzzTest.java| 7 +- .../org/apache/cassandra/repair/FuzzTestBase.java | 18 +- .../org/apache/cassandra/repair/RepairJobTest.java | 58 +-- .../apache/cassandra/repair/RepairSessionTest.java | 2 +- .../accord/AccordFastPathCoordinatorTest.java | 1 - .../cassandra/service/accord/AccordTestUtils.java | 19 + .../service/accord/AccordTopologyTest.java | 95 + .../service/accord/AccordTopologyUtils.java| 131 +++ .../accord/repair/RequiredResponseTrackerTest.java | 97 + 39 files changed, 1212 insertions(+), 369 deletions(-) diff --git a/.gitmodules b/.gitmodules index 616dacf610..da620237a6 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "modules/accord"] path = modules/accord - url = https://github.com/apache/cassandra-accord.git - branch = trunk + url = ../cassandra-accord.git + branch = accord-IR diff --git a/modules/accord b/modules/accord index 8b4f3895cb..3aaec7566e 16 --- a/modules/accord +++ b/modules/accord @@ -1 +1 @@ -Subproject commit 8b4f3895cb926f937450676b1db2e23d01a8b820 +Subproject commit 3aaec7566e389a0037b93b748867886fb68a0fd0 diff --git a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java index 1aa790f9ee..1eeb2b52fe 100644 --- a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java +++ b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java @@ -35,6 +35,7 @@ import org.apache.cassandra.utils.StorageCompatibilityMode; /** A class that extracts system properties for the cassandra node it runs within. */ public enum CassandraRelevantProperties { +ACCORD_AGENT_CLASS("cassandra.test.accord.agent"), ACCORD_REPAIR_RANGE_STEP_UPDATE_INTERVAL("cassandra.accord.repair.range_step_update_interval", "100"), ACQUIRE_RETRY_SECONDS("cassandra.acquire_retry_seconds", "60"), ACQUIRE_SLEEP_MS("cassandra.acquire_sleep_ms", "1000"), diff --git a/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java b/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java index e75b6be269..409a25c7bb 100644 --- a/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java +++ b/src/java/org/apache/cassandra/db/streaming/CassandraStreamReceiver.java @@ -246,7 +246,7 @@ public class CassandraStreamReceiver implements StreamReceiver checkNotNull(minVersion, "Unable to determine minimum cluster version");
(cassandra) 09/16: fix read repair tests
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit ed98b3ca4146b82e7aee169d05a97137f316c745 Author: Blake Eggleston AuthorDate: Mon Apr 1 14:12:00 2024 -0700 fix read repair tests --- .../cassandra/distributed/test/ReadRepairTest.java | 125 ++--- 1 file changed, 58 insertions(+), 67 deletions(-) diff --git a/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java b/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java index 8d253fb7ef..4964af1cd4 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java +++ b/test/distributed/org/apache/cassandra/distributed/test/ReadRepairTest.java @@ -75,23 +75,9 @@ import static org.junit.Assert.fail; public class ReadRepairTest extends TestBaseImpl { -private static Cluster cluster; private static int tableNum = 0; private String tableName; -@BeforeClass -public static void beforeClass() throws Throwable -{ -cluster = init(Cluster.create(3, c -> c.with(Feature.GOSSIP, Feature.NETWORK))); -} - -@AfterClass -public static void afterClass() throws Throwable -{ -if (cluster != null) -cluster.close(); -} - private void incrementTableName() { tableName = "tbl" + tableNum++; @@ -128,65 +114,68 @@ public class ReadRepairTest extends TestBaseImpl testReadRepair(strategy, false); } -private void testReadRepair(ReadRepairStrategy strategy, boolean brrThroughAccord) throws Throwable -{ -TransactionalMode transactionalMode = brrThroughAccord ? TransactionalMode.unsafe_writes : TransactionalMode.off; -cluster.schemaChange(withKeyspace("CREATE TABLE %s." + tableName + " (k int, c int, v int, PRIMARY KEY (k, c)) WITH transactional_mode='" + transactionalMode.toString().toLowerCase() + '\'' + -String.format(" AND read_repair='%s'", strategy))); -AccordTestBase.ensureTableIsAccordManaged(cluster, KEYSPACE, "t"); - -Object[] row = row(1, 1, 1); -String insertQuery = withKeyspace("INSERT INTO %s." + tableName + " (k, c, v) VALUES (?, ?, ?)"); -String selectQuery = withKeyspace("SELECT * FROM %s." + tableName + " WHERE k=1"); - -// insert data in two nodes, simulating a quorum write that has missed one node -cluster.get(1).executeInternal(insertQuery, row); -cluster.get(2).executeInternal(insertQuery, row); - -// verify that the third node doesn't have the row -assertRows(cluster.get(3).executeInternal(selectQuery)); - -// read with CL=QUORUM to trigger read repair, force 3 to be involved in the read so that read repair -// will occur -Filter blockReadFromOne = cluster.filters().inbound().from(3).to(1).verbs(READ_REQ.id).drop(); -assertRows(cluster.coordinator(3).execute(selectQuery, QUORUM), row); -blockReadFromOne.off(); - -// verify whether the coordinator has the repaired row depending on the read repair strategy -if (strategy == ReadRepairStrategy.NONE) +private void testReadRepair(ReadRepairStrategy strategy, boolean brrThroughAccord) throws Throwable { +try (Cluster cluster = init(Cluster.create(3, c -> c.with(Feature.GOSSIP, Feature.NETWORK { +TransactionalMode transactionalMode = brrThroughAccord ? TransactionalMode.unsafe_writes : TransactionalMode.off; +cluster.schemaChange(withKeyspace("CREATE TABLE %s." + tableName + " (k int, c int, v int, PRIMARY KEY (k, c)) WITH transactional_mode='" + transactionalMode.toString().toLowerCase() + '\'' + +String.format(" AND read_repair='%s'", strategy))); +AccordTestBase.ensureTableIsAccordManaged(cluster, KEYSPACE, "t"); + +Object[] row = row(1, 1, 1); +String insertQuery = withKeyspace("INSERT INTO %s." + tableName + " (k, c, v) VALUES (?, ?, ?)"); +String selectQuery = withKeyspace("SELECT * FROM %s." + tableName + " WHERE k=1"); + +// insert data in two nodes, simulating a quorum write that has missed one node +cluster.get(1).executeInternal(insertQuery, row); +cluster.get(2).executeInternal(insertQuery, row); + +// verify that the third node doesn't have the row assertRows(cluster.get(3).executeInternal(selectQuery)); -else -assertRows(cluster.get(3).executeInternal(selectQuery), row); + +// read with CL=QUORUM to trigger read repair, force 3 to be involved in the read so that read repair +// will occur +F
(cassandra) 05/16: fix ReadCommand.serializedSize
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 35d54cf463827f2443be4a3b5c7c02fab1e7b887 Author: Blake Eggleston AuthorDate: Fri Mar 29 11:42:22 2024 -0700 fix ReadCommand.serializedSize --- src/java/org/apache/cassandra/db/ReadCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/java/org/apache/cassandra/db/ReadCommand.java b/src/java/org/apache/cassandra/db/ReadCommand.java index cba1197767..56aaf1296c 100644 --- a/src/java/org/apache/cassandra/db/ReadCommand.java +++ b/src/java/org/apache/cassandra/db/ReadCommand.java @@ -1251,7 +1251,7 @@ public abstract class ReadCommand extends AbstractReadQuery public long serializedSize(ReadCommand command, int version) { -return IS_FOR_THRIFT // kind + flags +return 2 // kind + flags + (command.isDigestQuery() ? TypeSizes.sizeofUnsignedVInt(command.digestVersion()) : 0) + command.metadata().id.serializedSize() + (version >= MessagingService.VERSION_51 ? Epoch.serializer.serializedSize(command.metadata().epoch) : 0) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) 08/16: AccordGens.rangeDeps did not enforce unique ranges, which caused tests to fail
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 1d1aceabd499c20e020b4709aab2b041ae64607b Author: David Capwell AuthorDate: Mon Apr 1 10:31:57 2024 -0700 AccordGens.rangeDeps did not enforce unique ranges, which caused tests to fail --- modules/accord | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/accord b/modules/accord index 1a5cb4f100..8b4f3895cb 16 --- a/modules/accord +++ b/modules/accord @@ -1 +1 @@ -Subproject commit 1a5cb4f10002fb3650ad464b3a77664f18e2a901 +Subproject commit 8b4f3895cb926f937450676b1db2e23d01a8b820 - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) 06/16: revert async message delivery
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 6a022cdb69f9405e4b2541bf5ceaffae5c3853fa Author: Blake Eggleston AuthorDate: Fri Mar 29 11:42:30 2024 -0700 revert async message delivery --- test/distributed/org/apache/cassandra/distributed/impl/Instance.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java index f3c5b8259a..d7542f5f0c 100644 --- a/test/distributed/org/apache/cassandra/distributed/impl/Instance.java +++ b/test/distributed/org/apache/cassandra/distributed/impl/Instance.java @@ -505,7 +505,8 @@ public class Instance extends IsolatedExecutor implements IInvokableInstance @Override public void receiveMessage(IMessage message) { -async(receiveMessageRunnable(message)).apply(false); +sync(receiveMessageRunnable(message)).accept(false); +//async(receiveMessageRunnable(message)).apply(false); } @Override - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) 10/16: When jvm-dtest is shutting down an instance TCM retries block the shutdown causing the test to fail
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 90a6f6aaa7e453809eab9604a71f17751f125aa9 Author: David Capwell AuthorDate: Tue Apr 2 22:18:50 2024 -0700 When jvm-dtest is shutting down an instance TCM retries block the shutdown causing the test to fail patch by David Capwell; reviewed by Blake Eggleston for CASSANDRA-19514 --- .../apache/cassandra/concurrent/Shutdownable.java | 14 ++- .../cassandra/service/accord/AccordService.java| 10 + .../apache/cassandra/tcm/EpochAwareDebounce.java | 45 -- .../org/apache/cassandra/tcm/RemoteProcessor.java | 2 + .../cassandra/distributed/impl/Instance.java | 7 5 files changed, 65 insertions(+), 13 deletions(-) diff --git a/src/java/org/apache/cassandra/concurrent/Shutdownable.java b/src/java/org/apache/cassandra/concurrent/Shutdownable.java index 185875b791..a72253fc87 100644 --- a/src/java/org/apache/cassandra/concurrent/Shutdownable.java +++ b/src/java/org/apache/cassandra/concurrent/Shutdownable.java @@ -19,7 +19,9 @@ package org.apache.cassandra.concurrent; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import org.apache.cassandra.utils.ExecutorUtils; import org.apache.cassandra.utils.Shared; import static org.apache.cassandra.utils.Shared.Scope.SIMULATION; @@ -29,6 +31,11 @@ public interface Shutdownable { boolean isTerminated(); +default boolean isShutdown() +{ +return isTerminated(); +} + /** * Shutdown once any remaining work has completed (however this is defined for the implementation). */ @@ -42,5 +49,10 @@ public interface Shutdownable /** * Await termination of this object, i.e. the cessation of all current and future work. */ -public boolean awaitTermination(long timeout, TimeUnit units) throws InterruptedException; +boolean awaitTermination(long timeout, TimeUnit units) throws InterruptedException; + +default void shutdownAndWait(long timeout, TimeUnit unit) throws InterruptedException, TimeoutException +{ +ExecutorUtils.shutdownAndWait(timeout, unit, this); +} } diff --git a/src/java/org/apache/cassandra/service/accord/AccordService.java b/src/java/org/apache/cassandra/service/accord/AccordService.java index 9a44da4538..6e136029a0 100644 --- a/src/java/org/apache/cassandra/service/accord/AccordService.java +++ b/src/java/org/apache/cassandra/service/accord/AccordService.java @@ -35,7 +35,9 @@ import com.google.common.primitives.Ints; import accord.coordinate.TopologyMismatch; import accord.impl.CoordinateDurabilityScheduling; import org.apache.cassandra.cql3.statements.RequestValidations; +import org.apache.cassandra.service.StorageService; import org.apache.cassandra.service.accord.interop.AccordInteropAdapter.AccordInteropFactory; +import org.apache.cassandra.tcm.ClusterMetadata; import org.apache.cassandra.tcm.ClusterMetadataService; import org.apache.cassandra.service.accord.api.*; import org.apache.cassandra.utils.*; @@ -241,6 +243,14 @@ public class AccordService implements IAccordService, Shutdownable } AccordService as = new AccordService(AccordTopology.tcmIdToAccord(tcmId)); as.startup(); +if (StorageService.instance.isReplacingSameAddress()) +{ +// when replacing another node but using the same ip the hostId will also match, this causes no TCM transactions +// to be committed... +// In order to bootup correctly, need to pull in the current epoch +ClusterMetadata current = ClusterMetadata.current(); +as.configurationService().notifyPostCommit(current, current, false); +} instance = as; } diff --git a/src/java/org/apache/cassandra/tcm/EpochAwareDebounce.java b/src/java/org/apache/cassandra/tcm/EpochAwareDebounce.java index f65c03d830..6d404f5a09 100644 --- a/src/java/org/apache/cassandra/tcm/EpochAwareDebounce.java +++ b/src/java/org/apache/cassandra/tcm/EpochAwareDebounce.java @@ -21,7 +21,6 @@ package org.apache.cassandra.tcm; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Function; @@ -30,8 +29,8 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.concurrent.ExecutorFactory; import org.apache.cassandra.concurrent.ExecutorPlus; +import org.apache.cassandra.concurrent.Shutdownable; import org.apache.cassandra.tcm.log.LogState; -import org.apache.cassandra.utils.ExecutorUtils; import org.apache.cassandra.utils.concurrent.AsyncPromise; import org.apache.cassandra.utils.concurrent.Future; import org.apache.cassandra.utils.concurrent.Promise
(cassandra) 02/16: perf improvements
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 240a5874c0e99b587d121d6fad74457eefe6107d Author: Benedict Elliott Smith AuthorDate: Wed Feb 28 15:50:04 2024 + perf improvements --- modules/accord | 2 +- .../org/apache/cassandra/config/AccordSpec.java| 4 +- src/java/org/apache/cassandra/config/Config.java | 1 + .../cassandra/config/DatabaseDescriptor.java | 22 +++ .../db/compaction/CompactionIterator.java | 6 +- src/java/org/apache/cassandra/net/Verb.java| 32 +-- .../service/accord/AccordCachingState.java | 4 +- .../service/accord/AccordCommandStore.java | 20 +- .../service/accord/AccordCommandStores.java| 8 +- .../service/accord/AccordConfiguration.java| 1 + .../cassandra/service/accord/AccordJournal.java| 15 ++ .../cassandra/service/accord/AccordKeyspace.java | 19 +- .../service/accord/AccordObjectSizes.java | 29 +-- .../service/accord/AccordSafeCommandStore.java | 50 +++-- .../service/accord/AccordSafeCommandsForKey.java | 13 +- .../cassandra/service/accord/AccordSafeState.java | 2 + .../service/accord/AccordSafeTimestampsForKey.java | 9 +- .../cassandra/service/accord/AccordService.java| 8 +- .../service/accord/CommandsForRanges.java | 11 +- .../cassandra/service/accord/api/AccordAgent.java | 3 + .../service/accord/async/AsyncLoader.java | 12 +- .../service/accord/async/AsyncOperation.java | 5 +- .../service/accord/interop/AccordInteropApply.java | 2 - .../serializers/CommandsForKeySerializer.java | 217 +++-- .../accord/serializers/WaitingOnSerializer.java| 103 +++--- .../cassandra/service/accord/txn/TxnWrite.java | 5 +- .../apache/cassandra/utils/vint/VIntCoding.java| 47 - test/conf/logback-dtest-quiet.xml | 56 ++ .../cassandra/distributed/api/ICoordinator.java| 3 + .../cassandra/distributed/impl/Coordinator.java| 25 +++ .../cassandra/distributed/impl/Instance.java | 2 +- .../distributed/test/accord/AccordLoadTest.java| 96 + .../compaction/CompactionAccordIteratorsTest.java | 2 +- .../service/accord/AccordCommandStoreTest.java | 29 +-- .../service/accord/AccordCommandTest.java | 8 +- .../cassandra/service/accord/AccordTestUtils.java | 12 +- .../service/accord/async/AsyncLoaderTest.java | 9 +- .../service/accord/async/AsyncOperationTest.java | 11 +- .../serializers/CommandsForKeySerializerTest.java | 39 ++-- .../serializers/WaitingOnSerializerTest.java | 33 ++-- 40 files changed, 654 insertions(+), 321 deletions(-) diff --git a/modules/accord b/modules/accord index ef36616441..3562bb3c9c 16 --- a/modules/accord +++ b/modules/accord @@ -1 +1 @@ -Subproject commit ef36616441bd4ff4fec5379d986c75ad5a62ff7d +Subproject commit 3562bb3c9ce4e9eecdf65e236e968ef3ee9e0a86 diff --git a/src/java/org/apache/cassandra/config/AccordSpec.java b/src/java/org/apache/cassandra/config/AccordSpec.java index 697d7edc1e..e76745a233 100644 --- a/src/java/org/apache/cassandra/config/AccordSpec.java +++ b/src/java/org/apache/cassandra/config/AccordSpec.java @@ -47,9 +47,9 @@ public class AccordSpec public volatile DurationSpec fast_path_update_delay = new DurationSpec.IntSecondsBound(5); -public volatile DurationSpec schedule_durability_frequency = new DurationSpec.IntSecondsBound(15); +public volatile DurationSpec schedule_durability_frequency = new DurationSpec.IntSecondsBound(5); public volatile DurationSpec durability_txnid_lag = new DurationSpec.IntSecondsBound(5); -public volatile DurationSpec shard_durability_cycle = new DurationSpec.IntMinutesBound(2); +public volatile DurationSpec shard_durability_cycle = new DurationSpec.IntMinutesBound(1); public volatile DurationSpec global_durability_cycle = new DurationSpec.IntMinutesBound(10); public enum TransactionalRangeMigration diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index ff67e0ab98..1ac92db22d 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -480,6 +480,7 @@ public class Config public volatile int counter_cache_keys_to_save = Integer.MAX_VALUE; public DataStorageSpec.LongMebibytesBound paxos_cache_size = null; +public DataStorageSpec.LongMebibytesBound accord_cache_size = null; public DataStorageSpec.LongMebibytesBound consensus_migration_cache_size = null; diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index c6e84a0f03..e91f1f833c 100644 --- a/src/java/org
(cassandra) 03/16: Ninja for CASSANDRA-19305: Disable EphemeralRead by default to get benchmarks stable
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 3d93925ed460f1b18b0c30da7b7a370712341c37 Author: ci worker AuthorDate: Thu Mar 28 20:03:39 2024 -0700 Ninja for CASSANDRA-19305: Disable EphemeralRead by default to get benchmarks stable --- src/java/org/apache/cassandra/config/AccordSpec.java| 1 + src/java/org/apache/cassandra/config/DatabaseDescriptor.java| 5 + .../org/apache/cassandra/cql3/statements/TransactionStatement.java | 6 -- src/java/org/apache/cassandra/service/StorageProxy.java | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/java/org/apache/cassandra/config/AccordSpec.java b/src/java/org/apache/cassandra/config/AccordSpec.java index e76745a233..ab80ec4b32 100644 --- a/src/java/org/apache/cassandra/config/AccordSpec.java +++ b/src/java/org/apache/cassandra/config/AccordSpec.java @@ -69,4 +69,5 @@ public class AccordSpec * default transactional mode for tables created by this node when no transactional mode has been specified in the DDL */ public TransactionalMode default_transactional_mode = TransactionalMode.off; +public boolean ephemeralReadEnabled = false; } diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index e91f1f833c..952e10ef1e 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -5396,4 +5396,9 @@ public class DatabaseDescriptor { return conf.triggers_policy; } + +public static boolean getAccordEphemeralReadEnabledEnabled() +{ +return conf.accord.ephemeralReadEnabled; +} } diff --git a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java index fa09b8ec7e..68a8fd13f2 100644 --- a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java @@ -331,8 +331,10 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, List reads = createNamedReads(options, state, ImmutableMap.of(), keySet::add); Keys txnKeys = toKeys(keySet); TxnRead read = createTxnRead(reads, txnKeys, null); -Txn.Kind kind = txnKeys.size() == 1 && transactionalModeForSingleKey(txnKeys) == TransactionalMode.full -? EphemeralRead : Read; +Txn.Kind kind = txnKeys.size() == 1 +&& transactionalModeForSingleKey(txnKeys) == TransactionalMode.full +&& DatabaseDescriptor.getAccordEphemeralReadEnabledEnabled() +? EphemeralRead : Read; return new Txn.InMemory(kind, txnKeys, read, TxnQuery.ALL, null); } else diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index 198d963057..cbf51037ca 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -2028,7 +2028,7 @@ public class StorageProxy implements StorageProxyMBean consistencyLevel = transactionalMode.readCLForStrategy(consistencyLevel); TxnRead read = TxnRead.createSerialRead(readCommand, consistencyLevel); Invariants.checkState(read.keys().size() == 1, "Ephemeral reads are only strict-serializable for single partition reads"); -Txn txn = new Txn.InMemory(transactionalMode == TransactionalMode.full ? EphemeralRead : Read, read.keys(), read, TxnQuery.ALL, null); +Txn txn = new Txn.InMemory(transactionalMode == TransactionalMode.full && DatabaseDescriptor.getAccordEphemeralReadEnabledEnabled() ? EphemeralRead : Read, read.keys(), read, TxnQuery.ALL, null); IAccordService accordService = AccordService.instance(); TxnResult txnResult = accordService.coordinate(txn, consistencyLevel, queryStartNanoTime); if (txnResult.kind() == retry_new_protocol) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) 01/16: post-trunk rebase fixes
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 21983c7b3ccfc551a0ab9dd13f8bc75b32a12dc6 Author: Blake Eggleston AuthorDate: Wed Mar 27 09:18:39 2024 -0700 post-trunk rebase fixes --- modules/accord | 2 +- .../cassandra/cql3/selection/MapSelector.java | 3 ++- .../apache/cassandra/db/virtual/CachesTable.java | 6 ++--- .../dht/ReversedLongLocalPartitioner.java | 21 + .../cassandra/exceptions/RequestFailure.java | 2 ++ .../cassandra/metrics/AbstractCacheMetrics.java| 26 +- .../service/reads/thresholds/WarningContext.java | 2 +- .../tcm/sequences/CancelCMSReconfiguration.java| 3 ++- .../cassandra/distributed/test/TestBaseImpl.java | 3 ++- .../test/microbench/CachingBenchTest.java | 2 +- .../cluster/OnClusterMigrateConsensus.java | 4 ++-- test/unit/org/apache/cassandra/cql3/CQLTester.java | 4 +++- .../org/apache/cassandra/cql3/KeyCacheCqlTest.java | 4 ++-- .../cql3/conditions/ColumnConditionTest.java | 14 +--- .../cassandra/db/marshal/TypeValidationTest.java | 2 +- .../cassandra/io/sstable/LargePartitionsTest.java | 6 ++--- .../apache/cassandra/metrics/CacheMetricsTest.java | 6 ++--- .../apache/cassandra/transport/SerDeserTest.java | 13 ++- .../cassandra/utils/AbstractTypeGenerators.java| 2 +- 19 files changed, 68 insertions(+), 57 deletions(-) diff --git a/modules/accord b/modules/accord index 6b8bef48e5..ef36616441 16 --- a/modules/accord +++ b/modules/accord @@ -1 +1 @@ -Subproject commit 6b8bef48e5780aefda6bd1ff29a6290e56ede438 +Subproject commit ef36616441bd4ff4fec5379d986c75ad5a62ff7d diff --git a/src/java/org/apache/cassandra/cql3/selection/MapSelector.java b/src/java/org/apache/cassandra/cql3/selection/MapSelector.java index 450b64a58b..b0ccac4d93 100644 --- a/src/java/org/apache/cassandra/cql3/selection/MapSelector.java +++ b/src/java/org/apache/cassandra/cql3/selection/MapSelector.java @@ -34,6 +34,7 @@ import org.apache.cassandra.cql3.functions.Function; import org.apache.cassandra.db.TypeSizes; import org.apache.cassandra.db.filter.ColumnFilter.Builder; import org.apache.cassandra.db.marshal.AbstractType; +import org.apache.cassandra.db.marshal.ByteBufferAccessor; import org.apache.cassandra.db.marshal.MapType; import org.apache.cassandra.io.util.DataInputPlus; import org.apache.cassandra.io.util.DataOutputPlus; @@ -217,7 +218,7 @@ final class MapSelector extends Selector buffers.add(entry.getKey()); buffers.add(entry.getValue()); } -return type.pack(buffers); +return type.pack(buffers, ByteBufferAccessor.instance); } public void reset() diff --git a/src/java/org/apache/cassandra/db/virtual/CachesTable.java b/src/java/org/apache/cassandra/db/virtual/CachesTable.java index 9dabf8acbd..cc8a81b5b2 100644 --- a/src/java/org/apache/cassandra/db/virtual/CachesTable.java +++ b/src/java/org/apache/cassandra/db/virtual/CachesTable.java @@ -57,9 +57,9 @@ final class CachesTable extends AbstractVirtualTable private void addRow(SimpleDataSet result, String name, CacheMetrics metrics) { result.row(name) - .column(CAPACITY_BYTES, metrics.cacheSize.capacity.getValue()) - .column(SIZE_BYTES, metrics.cacheSize.size.getValue()) - .column(ENTRY_COUNT, metrics.cacheSize.entries.getValue()) + .column(CAPACITY_BYTES, metrics.capacity.getValue()) + .column(SIZE_BYTES, metrics.size.getValue()) + .column(ENTRY_COUNT, metrics.entries.getValue()) .column(REQUEST_COUNT, metrics.requests.getCount()) .column(HIT_COUNT, metrics.hits.getCount()) .column(HIT_RATIO, metrics.hitRate.mean.getValue()) diff --git a/src/java/org/apache/cassandra/dht/ReversedLongLocalPartitioner.java b/src/java/org/apache/cassandra/dht/ReversedLongLocalPartitioner.java index c56f3e920e..f290bcba9b 100644 --- a/src/java/org/apache/cassandra/dht/ReversedLongLocalPartitioner.java +++ b/src/java/org/apache/cassandra/dht/ReversedLongLocalPartitioner.java @@ -23,9 +23,11 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.function.Function; import com.google.common.primitives.Longs; +import accord.primitives.Ranges; import org.apache.cassandra.db.CachedHashDecoratedKey; import org.apache.cassandra.db.DecoratedKey; import org.apache.cassandra.db.marshal.AbstractType; @@ -155,6 +157,12 @@ public class ReversedLongLocalPartitioner implements IPartitioner return LongType.instance; } +@Override +public Function accordSplitter() +{ +throw new UnsupportedOperationException("Accord is not supp
(cassandra) branch cep-15-accord-pre-5-7-trunk-rebase created (now 58bc444d05)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cep-15-accord-pre-5-7-trunk-rebase in repository https://gitbox.apache.org/repos/asf/cassandra.git at 58bc444d05 Accord: NPE in RangeDeps.forEach No new revisions were added by this update. - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (668d678d5c -> 1d04457a24)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 668d678d5c Merge branch 'cassandra-5.0' into trunk new e22f67a2f7 Make sure IntersectFilteringQueryTest#shouldNotWarnOrFailOnIndexQuery waits for indexes to be available before making queries new 1d04457a24 Merge branch 'cassandra-5.0' 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: .../test/guardrails/IntersectFilteringQueryTest.java | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 1d04457a2414c5b631e84f2dc198842eefbd90c9 Merge: 668d678d5c e22f67a2f7 Author: Caleb Rackliffe AuthorDate: Thu May 2 13:35:55 2024 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Make sure IntersectFilteringQueryTest#shouldNotWarnOrFailOnIndexQuery waits for indexes to be available before making queries .../test/guardrails/IntersectFilteringQueryTest.java | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated: Make sure IntersectFilteringQueryTest#shouldNotWarnOrFailOnIndexQuery waits for indexes to be available before making queries
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new e22f67a2f7 Make sure IntersectFilteringQueryTest#shouldNotWarnOrFailOnIndexQuery waits for indexes to be available before making queries e22f67a2f7 is described below commit e22f67a2f7815f06190e78e7859e74d0769e4cc9 Author: Caleb Rackliffe AuthorDate: Thu May 2 09:48:41 2024 -0500 Make sure IntersectFilteringQueryTest#shouldNotWarnOrFailOnIndexQuery waits for indexes to be available before making queries patch by Caleb Rackliffe; reviewed by Brandon Williams for CASSANDRA-19612 --- .../test/guardrails/IntersectFilteringQueryTest.java | 10 -- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/distributed/org/apache/cassandra/distributed/test/guardrails/IntersectFilteringQueryTest.java b/test/distributed/org/apache/cassandra/distributed/test/guardrails/IntersectFilteringQueryTest.java index aa6f8876e6..cbf0f42fe5 100644 --- a/test/distributed/org/apache/cassandra/distributed/test/guardrails/IntersectFilteringQueryTest.java +++ b/test/distributed/org/apache/cassandra/distributed/test/guardrails/IntersectFilteringQueryTest.java @@ -29,12 +29,16 @@ import com.datastax.driver.core.Session; import com.datastax.driver.core.exceptions.InvalidQueryException; import org.apache.cassandra.db.guardrails.Guardrails; import org.apache.cassandra.distributed.Cluster; -import org.apache.cassandra.distributed.api.Feature; import org.apache.cassandra.distributed.api.IIsolatedExecutor; +import org.apache.cassandra.distributed.test.sai.SAIUtil; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.apache.cassandra.distributed.api.Feature.GOSSIP; +import static org.apache.cassandra.distributed.api.Feature.NATIVE_PROTOCOL; +import static org.apache.cassandra.distributed.api.Feature.NETWORK; + public class IntersectFilteringQueryTest extends GuardrailTester { private static Cluster cluster; @@ -44,7 +48,7 @@ public class IntersectFilteringQueryTest extends GuardrailTester @BeforeClass public static void setupCluster() throws IOException { -cluster = init(Cluster.build(2).withConfig(c -> c.with(Feature.GOSSIP, Feature.NATIVE_PROTOCOL) +cluster = init(Cluster.build(2).withConfig(c -> c.with(GOSSIP, NATIVE_PROTOCOL, NETWORK) .set("read_thresholds_enabled", "true") .set("authenticator", "PasswordAuthenticator")).start()); @@ -112,6 +116,8 @@ public class IntersectFilteringQueryTest extends GuardrailTester schemaChange("CREATE TABLE %s (k bigint, c bigint, v1 bigint, v2 bigint, PRIMARY KEY (k, c))"); schemaChange("CREATE INDEX ON %s(v1) USING 'sai'"); schemaChange("CREATE INDEX ON %s(v2) USING 'sai'"); +SAIUtil.waitForIndexQueryable(getCluster(), KEYSPACE); + List globalWarnings = executeViaDriver(format("SELECT * FROM %s WHERE v1 = 0 AND v2 = 0")); assertThat(globalWarnings).isEmpty(); List partitionWarnings = executeViaDriver(format("SELECT * FROM %s WHERE k = 0 AND v1 = 0 AND v2 = 0")); - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-4.1 updated: Make queries visible to the "system_views.queries" virtual table at the coordinator level
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-4.1 by this push: new 428fa1f445 Make queries visible to the "system_views.queries" virtual table at the coordinator level 428fa1f445 is described below commit 428fa1f4453735ef43d508621e5e7d9e0a054415 Author: Caleb Rackliffe AuthorDate: Fri Apr 19 18:40:08 2024 -0500 Make queries visible to the "system_views.queries" virtual table at the coordinator level patch by Caleb Rackliffe; reviewed by David Capwell and Chris Lohfink for CASSANDRA-19577 --- CHANGES.txt| 1 + .../apache/cassandra/concurrent/TaskFactory.java | 20 +- .../apache/cassandra/db/virtual/QueriesTable.java | 2 +- .../distributed/test/QueriesTableTest.java | 221 - 4 files changed, 192 insertions(+), 52 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 801c6f2e48..e4de315818 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.1.5 + * Make queries visible to the "system_views.queries" virtual table at the coordinator level (CASSANDRA-19577) * Concurrent equivalent schema updates lead to unresolved disagreement (CASSANDRA-19578) * Fix hints delivery for a node going down repeatedly (CASSANDRA-19495) * Do not go to disk for reading hints file sizes (CASSANDRA-19477) diff --git a/src/java/org/apache/cassandra/concurrent/TaskFactory.java b/src/java/org/apache/cassandra/concurrent/TaskFactory.java index faeabe6c4c..9ed84f71c0 100644 --- a/src/java/org/apache/cassandra/concurrent/TaskFactory.java +++ b/src/java/org/apache/cassandra/concurrent/TaskFactory.java @@ -32,7 +32,7 @@ import static org.apache.cassandra.utils.Shared.Scope.SIMULATION; /** * A simple mechanism to impose our desired semantics on the execution of a task without requiring a specialised * executor service. We wrap tasks in a suitable {@link FutureTask} or encapsulating {@link Runnable}. - * + * * The encapsulations handle any exceptions in our standard way, as well as ensuring {@link ExecutorLocals} are * propagated in the case of {@link #localAware()} */ @@ -52,7 +52,7 @@ public interface TaskFactory static TaskFactory standard() { return Standard.INSTANCE; } static TaskFactory localAware() { return LocalAware.INSTANCE; } -public class Standard implements TaskFactory +class Standard implements TaskFactory { static final Standard INSTANCE = new Standard(); protected Standard() {} @@ -90,8 +90,8 @@ public interface TaskFactory @Override public RunnableFuture toSubmit(WithResources withResources, Runnable runnable) { -return withResources.isNoOp() ? newTask(callable(runnable)) - : newTask(withResources, callable(runnable)); +return withResources.isNoOp() ? newTask(runnable) + : newTask(withResources, runnable); } @Override @@ -108,18 +108,28 @@ public interface TaskFactory : newTask(withResources, callable); } +protected RunnableFuture newTask(Runnable task) +{ +return new FutureTask<>(task); +} + protected RunnableFuture newTask(Callable call) { return new FutureTask<>(call); } +protected RunnableFuture newTask(WithResources withResources, Runnable task) +{ +return new FutureTaskWithResources<>(withResources, task); +} + protected RunnableFuture newTask(WithResources withResources, Callable call) { return new FutureTaskWithResources<>(withResources, call); } } -public class LocalAware extends Standard +class LocalAware extends Standard { static final LocalAware INSTANCE = new LocalAware(); diff --git a/src/java/org/apache/cassandra/db/virtual/QueriesTable.java b/src/java/org/apache/cassandra/db/virtual/QueriesTable.java index aeba61c004..9031bbd70b 100644 --- a/src/java/org/apache/cassandra/db/virtual/QueriesTable.java +++ b/src/java/org/apache/cassandra/db/virtual/QueriesTable.java @@ -37,7 +37,7 @@ import static org.apache.cassandra.utils.MonotonicClock.Global.approxTime; * * thread_id | queued_micros | running_micros | task * --+---+-+ - * Native-Transport-Requests-7 | 72923 |7611 | QUERY select * from system_views.queries; [pageSize = 100] + * Native-Transport-Requests-7 | 72923 |
(cassandra) branch cassandra-5.0 updated (ae9be29918 -> a9da19c311)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git from ae9be29918 Merge branch 'cassandra-4.1' into cassandra-5.0 new 428fa1f445 Make queries visible to the "system_views.queries" virtual table at the coordinator level new a9da19c311 Merge branch 'cassandra-4.1' into cassandra-5.0 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 + .../apache/cassandra/concurrent/TaskFactory.java | 20 +- .../apache/cassandra/db/virtual/QueriesTable.java | 2 +- .../distributed/test/QueriesTableTest.java | 221 - 4 files changed, 192 insertions(+), 52 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (20b4ca44d8 -> bbcf92b2c4)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 20b4ca44d8 Merge branch 'cassandra-5.0' into trunk new 428fa1f445 Make queries visible to the "system_views.queries" virtual table at the coordinator level new a9da19c311 Merge branch 'cassandra-4.1' into cassandra-5.0 new bbcf92b2c4 Merge branch 'cassandra-5.0' 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 + .../apache/cassandra/concurrent/TaskFactory.java | 20 +- .../apache/cassandra/db/virtual/QueriesTable.java | 2 +- .../distributed/test/QueriesTableTest.java | 221 - 4 files changed, 192 insertions(+), 52 deletions(-) - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit bbcf92b2c45e04e06554fb634166c0e37af38891 Merge: 20b4ca44d8 a9da19c311 Author: Caleb Rackliffe AuthorDate: Wed May 1 14:42:22 2024 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Make queries visible to the "system_views.queries" virtual table at the coordinator level CHANGES.txt| 1 + .../apache/cassandra/concurrent/TaskFactory.java | 20 +- .../apache/cassandra/db/virtual/QueriesTable.java | 2 +- .../distributed/test/QueriesTableTest.java | 221 - 4 files changed, 192 insertions(+), 52 deletions(-) diff --cc CHANGES.txt index 02509ad4dd,7e18e40c97..54f370529b --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -70,6 -33,8 +70,7 @@@ Merged from 5.0 * Fix resource cleanup after SAI query timeouts (CASSANDRA-19177) * Suppress CVE-2023-6481 (CASSANDRA-19184) Merged from 4.1: + * Make queries visible to the "system_views.queries" virtual table at the coordinator level (CASSANDRA-19577) - * Concurrent equivalent schema updates lead to unresolved disagreement (CASSANDRA-19578) * Fix hints delivery for a node going down repeatedly (CASSANDRA-19495) * Do not go to disk for reading hints file sizes (CASSANDRA-19477) * Fix system_views.settings to handle array types (CASSANDRA-19475) - 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-4.1' into cassandra-5.0
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit a9da19c311f7a9e386be4f522bbe2b96771cf199 Merge: ae9be29918 428fa1f445 Author: Caleb Rackliffe AuthorDate: Wed May 1 14:38:41 2024 -0500 Merge branch 'cassandra-4.1' into cassandra-5.0 * cassandra-4.1: Make queries visible to the "system_views.queries" virtual table at the coordinator level CHANGES.txt| 1 + .../apache/cassandra/concurrent/TaskFactory.java | 20 +- .../apache/cassandra/db/virtual/QueriesTable.java | 2 +- .../distributed/test/QueriesTableTest.java | 221 - 4 files changed, 192 insertions(+), 52 deletions(-) diff --cc CHANGES.txt index a5016cd004,e4de315818..7e18e40c97 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,38 -1,5 +1,39 @@@ -4.1.5 +5.0-beta2 + * Optionally fail writes when SAI refuses to index a term value exceeding configured term max size (CASSANDRA-19493) + * Vector search can restrict on clustering keys when filtering isn't required (CASSANDRA-19544) + * Fix FBUtilities' parsing of gcp cos_containerd kernel versions (CASSANDRA-18594) + * Clean up KeyRangeIterator classes (CASSANDRA-19428) + * Warn clients about possible consistency violations for filtering queries against multiple mutable columns (CASSANDRA-19489) + * Align buffer with commitlog segment size (CASSANDRA-19471) + * Ensure SAI indexes empty byte buffers for types that allow them as a valid input (CASSANDRA-19461) + * Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 (CASSANDRA-19467) + * Set uuid_sstable_identifiers_enabled to true in cassandra-latest.yaml (CASSANDRA-19460) + * Revert switching to approxTime in Dispatcher (CASSANDRA-19454) + * Add an optimized default configuration to tests and make it available for new users (CASSANDRA-18753) + * Fix remote JMX under Java17 (CASSANDRA-19453) + * Avoid consistency violations for SAI intersections over unrepaired data at consistency levels requiring reconciliation (CASSANDRA-19018) + * Fix NullPointerException in ANN+WHERE when adding rows in another partition (CASSANDRA-19404) + * Record latencies for SAI post-filtering reads against local storage (CASSANDRA-18940) + * Fix VectorMemoryIndex#update logic to compare vectors. Fix Index view (CASSANDRA-19168) + * Deprecate native_transport_port_ssl (CASSANDRA-19392) + * Update packaging shell includes (CASSANDRA-19283) + * Fix data corruption in VectorCodec when using heap buffers (CASSANDRA-19167) + * Avoid over-skipping of key iterators from static column indexes during mixed intersections (CASSANDRA-19278) + * Make concurrent_index_builders configurable at runtime (CASSANDRA-19266) + * Fix storage_compatibility_mode for streaming (CASSANDRA-19126) + * Add support of vector type to cqlsh COPY command (CASSANDRA-19118) + * Make CQLSSTableWriter to support building of SAI indexes (CASSANDRA-18714) + * Append additional JVM options when using JDK17+ (CASSANDRA-19001) + * Upgrade Python driver to 3.29.0 (CASSANDRA-19245) + * Creating a SASI index after creating an SAI index does not break secondary index queries (CASSANDRA-18939) + * Optionally fail when a non-partition-restricted query is issued against an index (CASSANDRA-18796) + * Add a startup check to fail startup when using invalid configuration with certain Kernel and FS type (CASSANDRA-19196) + * UCS min_sstable_size should not be lower than target_sstable_size lower bound (CASSANDRA-19112) + * Fix the correspondingMessagingVersion of SSTable format and improve TTL overflow tests coverage (CASSANDRA-19197) + * Fix resource cleanup after SAI query timeouts (CASSANDRA-19177) + * Suppress CVE-2023-6481 (CASSANDRA-19184) +Merged from 4.1: + * Make queries visible to the "system_views.queries" virtual table at the coordinator level (CASSANDRA-19577) * Concurrent equivalent schema updates lead to unresolved disagreement (CASSANDRA-19578) * Fix hints delivery for a node going down repeatedly (CASSANDRA-19495) * Do not go to disk for reading hints file sizes (CASSANDRA-19477) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cep-15-accord updated: Prohibit counter column access in Accord transactions
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cep-15-accord by this push: new c876f6a01d Prohibit counter column access in Accord transactions c876f6a01d is described below commit c876f6a01dd9ac254406898cef0727694b38d45a Author: Caleb Rackliffe AuthorDate: Fri Apr 26 12:42:45 2024 -0500 Prohibit counter column access in Accord transactions patch by Caleb Rackliffe; reviewed by David Capwell for CASSANDRA-18987 --- CHANGES.txt| 1 + .../cql3/statements/TransactionStatement.java | 16 - .../cql3/statements/TransactionStatementTest.java | 42 +- 3 files changed, 57 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 3e40753b46..9c6b8843d5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.1 + * Prohibit counter column access in Accord transactions (CASSANDRA-18987) * Add Accord configuration stub (CASSANDRA-18221) * Improve transaction statement validation (CASSANDRA-18302) * Add support for prepared statements for accord transactions (CASSANDRA-18299) diff --git a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java index 68a8fd13f2..f2266557e9 100644 --- a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java @@ -87,6 +87,7 @@ import static accord.primitives.Txn.Kind.Read; import static org.apache.cassandra.cql3.statements.RequestValidations.checkFalse; import static org.apache.cassandra.cql3.statements.RequestValidations.checkNotNull; import static org.apache.cassandra.cql3.statements.RequestValidations.checkTrue; +import static org.apache.cassandra.cql3.statements.RequestValidations.invalidRequest; import static org.apache.cassandra.service.accord.txn.TxnRead.createTxnRead; import static org.apache.cassandra.service.accord.txn.TxnResult.Kind.retry_new_protocol; import static org.apache.cassandra.utils.Clock.Global.nanoTime; @@ -99,6 +100,7 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, public static final String INCOMPLETE_PRIMARY_KEY_SELECT_MESSAGE = "SELECT must specify either all primary key elements or all partition key elements and LIMIT 1. In both cases partition key elements must be always specified with equality operators; %s %s"; public static final String NO_CONDITIONS_IN_UPDATES_MESSAGE = "Updates within transactions may not specify their own conditions; %s statement %s"; public static final String NO_TIMESTAMPS_IN_UPDATES_MESSAGE = "Updates within transactions may not specify custom timestamps; %s statement %s"; +public static final String NO_COUNTERS_IN_TXNS_MESSAGE = "Counter columns cannot be accessed within a transaction; %s statement %s"; public static final String EMPTY_TRANSACTION_MESSAGE = "Transaction contains no reads or writes"; public static final String SELECT_REFS_NEED_COLUMN_MESSAGE = "SELECT references must specify a column."; public static final String TRANSACTIONS_DISABLED_MESSAGE = "Accord transactions are disabled. (See accord.enabled in cassandra.yaml)"; @@ -518,6 +520,10 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, checkTrue(selectNames.add(name), DUPLICATE_TUPLE_NAME_MESSAGE, name.name()); SelectStatement prepared = select.prepare(bindVariables); + +if (prepared.table.isCounter()) +throw invalidRequest(NO_COUNTERS_IN_TXNS_MESSAGE, "SELECT", prepared.source); + NamedSelect namedSelect = new NamedSelect(name, prepared); checkAtMostOneRowSpecified(namedSelect.select, "LET assignment " + name.name()); preparedAssignments.add(namedSelect); @@ -531,7 +537,12 @@ public class TransactionStatement implements CQLStatement.CompositeCQLStatement, NamedSelect returningSelect = null; if (select != null) { -returningSelect = new NamedSelect(TxnDataName.returning(), select.prepare(bindVariables)); +SelectStatement prepared = select.prepare(bindVariables); + +if (prepared.table.isCounter()) +throw invalidRequest(NO_COUNTERS_IN_TXNS_MESSAGE, "SELECT", prepared.source); + +returningSelect = new NamedSelect(TxnDataName.returning(), prepared); checkAtMostOneRowSpecified(returningSelect.select, "returning select"); } @@ -556,6 +567,9 @@ public class Transacti
(cassandra) branch cassandra-5.0 updated: Optionally fail writes when SAI refuses to index a term value exceeding a configured maximum size
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new 9bfaee91c4 Optionally fail writes when SAI refuses to index a term value exceeding a configured maximum size 9bfaee91c4 is described below commit 9bfaee91c4fd7a269e3ff924e8a504bad5d6514a Author: Caleb Rackliffe AuthorDate: Tue Apr 9 17:32:56 2024 -0500 Optionally fail writes when SAI refuses to index a term value exceeding a configured maximum size patch by Caleb Rackliffe; reviewed by Berenguer Blasi and Stefan Miklosovic for CASSANDRA-19493 --- CHANGES.txt| 1 + NEWS.txt | 1 + conf/cassandra.yaml| 12 + .../config/CassandraRelevantProperties.java| 3 - src/java/org/apache/cassandra/config/Config.java | 11 +- .../apache/cassandra/config/GuardrailsOptions.java | 84 +++ .../cassandra/cql3/statements/BatchStatement.java | 2 +- .../cql3/statements/BatchUpdatesCollector.java | 23 +- .../cassandra/cql3/statements/CQL3CasRequest.java | 2 +- .../cql3/statements/ModificationStatement.java | 2 +- .../statements/SingleTableUpdatesCollector.java| 6 +- .../cql3/statements/UpdatesCollector.java | 3 +- src/java/org/apache/cassandra/db/IMutation.java| 27 +- .../apache/cassandra/db/guardrails/Guardrails.java | 98 +++- .../cassandra/db/guardrails/GuardrailsConfig.java | 54 .../cassandra/db/guardrails/GuardrailsMBean.java | 72 ++ .../cassandra/db/partitions/PartitionUpdate.java | 5 +- .../cassandra/db/virtual/VirtualMutation.java | 3 +- src/java/org/apache/cassandra/index/Index.java | 5 +- .../org/apache/cassandra/index/IndexRegistry.java | 41 ++-- .../cassandra/index/SecondaryIndexManager.java | 7 +- .../cassandra/index/internal/CassandraIndex.java | 4 +- .../cassandra/index/sai/StorageAttachedIndex.java | 77 +++--- .../index/sai/disk/v1/SSTableIndexWriter.java | 2 +- .../index/sai/memory/TrieMemoryIndex.java | 2 +- .../index/sai/memory/VectorMemoryIndex.java| 2 +- .../org/apache/cassandra/index/sasi/SASIIndex.java | 4 +- .../paxos/uncommitted/PaxosUncommittedIndex.java | 4 +- .../cassandra/anttasks/TestNameCheckTask.java | 26 +- .../guardrails/GuardrailColumnValueSizeTest.java | 237 ++ .../guardrails/GuardrailSaiFrozenTermSizeTest.java | 139 +++ .../guardrails/GuardrailSaiStringTermSizeTest.java | 215 .../guardrails/GuardrailSaiVectorTermSizeTest.java | 133 ++ .../db/guardrails/ValueThresholdTester.java| 273 + .../unit/org/apache/cassandra/index/StubIndex.java | 4 +- .../index/internal/CustomCassandraIndex.java | 4 +- .../index/sai/cql/AllTypesSimpleEqTest.java| 9 +- .../index/sai/cql/StorageAttachedIndexDDLTest.java | 47 38 files changed, 1267 insertions(+), 377 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 74d142089c..09c5468db4 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Optionally fail writes when SAI refuses to index a term value exceeding configured term max size (CASSANDRA-19493) * Vector search can restrict on clustering keys when filtering isn't required (CASSANDRA-19544) * Fix FBUtilities' parsing of gcp cos_containerd kernel versions (CASSANDRA-18594) * Clean up KeyRangeIterator classes (CASSANDRA-19428) diff --git a/NEWS.txt b/NEWS.txt index c074867069..1ba8f6639e 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -126,6 +126,7 @@ New features - Vector dimensions - Whether it is possible to execute secondary index queries without restricting on partition key - Warning and failure thresholds for maximum referenced SAI indexes on a replica when executing a SELECT query + - Warning and failure thresholds for the size of terms written to an SAI index - It is possible to list ephemeral snapshots by nodetool listsnaphots command when flag "-e" is specified. - Added a new flag to `nodetool profileload` and JMX endpoint to set up recurring profile load generation on specified intervals (see CASSANDRA-17821) diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index 961c607f93..99dd449c84 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -2152,6 +2152,18 @@ drop_compact_storage_enabled: false # before emitting a failure (defaults to -1 to disable) #sai_sstable_indexes_per_query_fail_threshold: -1 +# Guardrail specifying warn/fail thresholds for the size of string terms written to an SAI index +# sai_string_term_size_warn_threshold: 1KiB +# sai_string_term_size_fail_threshold: 8KiB + +# Guardrail specifying warn/fail
(cassandra) branch trunk updated (f345370f35 -> c33c8ebab4)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from f345370f35 Merge branch 'cassandra-5.0' into trunk new 9bfaee91c4 Optionally fail writes when SAI refuses to index a term value exceeding a configured maximum size new c33c8ebab4 Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + NEWS.txt | 1 + conf/cassandra.yaml| 12 + .../config/CassandraRelevantProperties.java| 3 - src/java/org/apache/cassandra/config/Config.java | 11 +- .../apache/cassandra/config/GuardrailsOptions.java | 84 +++ .../cassandra/cql3/statements/BatchStatement.java | 2 +- .../cql3/statements/BatchUpdatesCollector.java | 23 +- .../cassandra/cql3/statements/CQL3CasRequest.java | 2 +- .../cql3/statements/ModificationStatement.java | 2 +- .../statements/SingleTableUpdatesCollector.java| 6 +- .../cql3/statements/UpdatesCollector.java | 3 +- src/java/org/apache/cassandra/db/IMutation.java| 27 +- .../apache/cassandra/db/guardrails/Guardrails.java | 98 +++- .../cassandra/db/guardrails/GuardrailsConfig.java | 54 .../cassandra/db/guardrails/GuardrailsMBean.java | 72 ++ .../cassandra/db/partitions/PartitionUpdate.java | 5 +- .../cassandra/db/virtual/VirtualMutation.java | 3 +- src/java/org/apache/cassandra/index/Index.java | 5 +- .../org/apache/cassandra/index/IndexRegistry.java | 41 ++-- .../cassandra/index/SecondaryIndexManager.java | 7 +- .../cassandra/index/internal/CassandraIndex.java | 10 +- .../cassandra/index/sai/StorageAttachedIndex.java | 77 +++--- .../index/sai/disk/v1/SSTableIndexWriter.java | 2 +- .../index/sai/memory/TrieMemoryIndex.java | 2 +- .../index/sai/memory/VectorMemoryIndex.java| 2 +- .../org/apache/cassandra/index/sasi/SASIIndex.java | 4 +- .../paxos/uncommitted/PaxosUncommittedIndex.java | 4 +- .../cassandra/anttasks/TestNameCheckTask.java | 26 +- .../guardrails/GuardrailColumnValueSizeTest.java | 237 ++ .../guardrails/GuardrailSaiFrozenTermSizeTest.java | 139 +++ .../guardrails/GuardrailSaiStringTermSizeTest.java | 215 .../guardrails/GuardrailSaiVectorTermSizeTest.java | 133 ++ .../db/guardrails/ValueThresholdTester.java| 273 + .../unit/org/apache/cassandra/index/StubIndex.java | 4 +- .../index/internal/CustomCassandraIndex.java | 4 +- .../index/sai/cql/AllTypesSimpleEqTest.java| 9 +- .../index/sai/cql/StorageAttachedIndexDDLTest.java | 47 38 files changed, 1270 insertions(+), 380 deletions(-) create mode 100644 test/unit/org/apache/cassandra/db/guardrails/GuardrailSaiFrozenTermSizeTest.java create mode 100644 test/unit/org/apache/cassandra/db/guardrails/GuardrailSaiStringTermSizeTest.java create mode 100644 test/unit/org/apache/cassandra/db/guardrails/GuardrailSaiVectorTermSizeTest.java create mode 100644 test/unit/org/apache/cassandra/db/guardrails/ValueThresholdTester.java - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit c33c8ebab444209a9675f273448110afd0787faa Merge: f345370f35 9bfaee91c4 Author: Caleb Rackliffe AuthorDate: Wed Apr 17 11:24:24 2024 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Optionally fail writes when SAI refuses to index a term value exceeding a configured maximum size CHANGES.txt| 1 + NEWS.txt | 1 + conf/cassandra.yaml| 12 + .../config/CassandraRelevantProperties.java| 3 - src/java/org/apache/cassandra/config/Config.java | 11 +- .../apache/cassandra/config/GuardrailsOptions.java | 84 +++ .../cassandra/cql3/statements/BatchStatement.java | 2 +- .../cql3/statements/BatchUpdatesCollector.java | 23 +- .../cassandra/cql3/statements/CQL3CasRequest.java | 2 +- .../cql3/statements/ModificationStatement.java | 2 +- .../statements/SingleTableUpdatesCollector.java| 6 +- .../cql3/statements/UpdatesCollector.java | 3 +- src/java/org/apache/cassandra/db/IMutation.java| 27 +- .../apache/cassandra/db/guardrails/Guardrails.java | 98 +++- .../cassandra/db/guardrails/GuardrailsConfig.java | 54 .../cassandra/db/guardrails/GuardrailsMBean.java | 72 ++ .../cassandra/db/partitions/PartitionUpdate.java | 5 +- .../cassandra/db/virtual/VirtualMutation.java | 3 +- src/java/org/apache/cassandra/index/Index.java | 5 +- .../org/apache/cassandra/index/IndexRegistry.java | 41 ++-- .../cassandra/index/SecondaryIndexManager.java | 7 +- .../cassandra/index/internal/CassandraIndex.java | 10 +- .../cassandra/index/sai/StorageAttachedIndex.java | 77 +++--- .../index/sai/disk/v1/SSTableIndexWriter.java | 2 +- .../index/sai/memory/TrieMemoryIndex.java | 2 +- .../index/sai/memory/VectorMemoryIndex.java| 2 +- .../org/apache/cassandra/index/sasi/SASIIndex.java | 4 +- .../paxos/uncommitted/PaxosUncommittedIndex.java | 4 +- .../cassandra/anttasks/TestNameCheckTask.java | 26 +- .../guardrails/GuardrailColumnValueSizeTest.java | 237 ++ .../guardrails/GuardrailSaiFrozenTermSizeTest.java | 139 +++ .../guardrails/GuardrailSaiStringTermSizeTest.java | 215 .../guardrails/GuardrailSaiVectorTermSizeTest.java | 133 ++ .../db/guardrails/ValueThresholdTester.java| 273 + .../unit/org/apache/cassandra/index/StubIndex.java | 4 +- .../index/internal/CustomCassandraIndex.java | 4 +- .../index/sai/cql/AllTypesSimpleEqTest.java| 9 +- .../index/sai/cql/StorageAttachedIndexDDLTest.java | 47 38 files changed, 1270 insertions(+), 380 deletions(-) diff --cc CHANGES.txt index ab257c3baf,09c5468db4..6d9856ae5c --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,37 -1,5 +1,38 @@@ -5.0-beta2 +5.1 + * Add new TriggersPolicy configuration to allow operators to disable triggers (CASSANDRA-19532) + * Use Transformation.Kind.id in local and distributed log tables (CASSANDRA-19516) + * Remove period field from ClusterMetadata and metadata log tables (CASSANDRA-19482) + * Enrich system_views.pending_hints vtable with hints sizes (CASSANDRA-19486) + * Expose all dropwizard metrics in virtual tables (CASSANDRA-14572) + * Ensured that PropertyFileSnitchTest do not overwrite cassandra-toploogy.properties (CASSANDRA-19502) + * Add option for MutualTlsAuthenticator to restrict the certificate validity period (CASSANDRA-18951) + * Fix StorageService::constructRangeToEndpointMap for non-distributed keyspaces (CASSANDRA-19255) + * Group nodetool cms commands into single command group (CASSANDRA-19393) + * Register the measurements of the bootstrap process as Dropwizard metrics (CASSANDRA-19447) + * Add LIST SUPERUSERS CQL statement (CASSANDRA-19417) + * Modernize CQLSH datetime conversions (CASSANDRA-18879) + * Harry model and in-JVM tests for partition-restricted 2i queries (CASSANDRA-18275) + * Refactor cqlshmain global constants (CASSANDRA-19201) + * Remove native_transport_port_ssl (CASSANDRA-19397) + * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) + * Expose auth mode in system_views.clients, nodetool clientstats, metrics (CASSANDRA-19366) + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189) + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271) + * Refactor structure of caching metrics and expose auth cache metrics via JMX (CASSANDRA-17062) + * Allow CQL client certificate authentication to work without sending an AUTHENTICATE request (CASSANDRA-18857) + * Extend nodetool tpstats and system_views.thread_pools
(cassandra) branch cassandra-5.0 updated (9752ceb439 -> 7c29439cef)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git from 9752ceb439 Merge branch 'cassandra-4.1' into cassandra-5.0 new 0974a3656d Optionally avoid hint transfer during decommission new 39bd3c2261 Merge branch 'cassandra-4.0' into cassandra-4.1 new 7c29439cef Merge branch 'cassandra-4.1' into cassandra-5.0 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 branch 'cassandra-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit cddfd7f17a3e676ab35a1dbdaacb66377cd2556b Merge: 7623e4678b 7c29439cef Author: Caleb Rackliffe AuthorDate: Mon Apr 8 15:30:29 2024 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Optionally avoid hint transfer during decommission - 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-4.0' into cassandra-4.1
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 39bd3c22612e99239f91f881558329251a4c4e98 Merge: 5fb562d7ef 0974a3656d Author: Caleb Rackliffe AuthorDate: Mon Apr 8 15:27:12 2024 -0500 Merge branch 'cassandra-4.0' into cassandra-4.1 * cassandra-4.0: Optionally avoid hint transfer during decommission CHANGES.txt| 1 + conf/cassandra.yaml| 5 +++ src/java/org/apache/cassandra/config/Config.java | 1 + .../cassandra/config/DatabaseDescriptor.java | 9 + .../cassandra/hints/HintsDispatchExecutor.java | 21 ++ .../apache/cassandra/service/StorageService.java | 28 -- .../cassandra/service/StorageServiceMBean.java | 4 ++ .../test/HintedHandoffAddRemoveNodesTest.java | 45 +- 8 files changed, 103 insertions(+), 11 deletions(-) diff --cc CHANGES.txt index de36d88adf,b71ca9254f..8f718e4e89 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,8 -1,5 +1,9 @@@ -4.0.13 +4.1.5 + * Fix hints delivery for a node going down repeatedly (CASSANDRA-19495) + * Do not go to disk for reading hints file sizes (CASSANDRA-19477) + * Fix system_views.settings to handle array types (CASSANDRA-19475) +Merged from 4.0: + * Optionally avoid hint transfer during decommission (CASSANDRA-19525) * Change logging to TRACE when failing to get peer certificate (CASSANDRA-19508) * Push LocalSessions info logs to debug (CASSANDRA-18335) * Filter remote DC replicas out when constructing the initial replica plan for the local read repair (CASSANDRA-19120) diff --cc conf/cassandra.yaml index 1986d6fa29,b5e6af8767..be1439c80e --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@@ -83,22 -81,16 +83,27 @@@ max_hints_delivery_threads: # How often hints should be flushed from the internal buffers to disk. # Will *not* trigger fsync. -hints_flush_period_in_ms: 1 +# Min unit: ms +hints_flush_period: 1ms -# Maximum size for a single hints file, in megabytes. -max_hints_file_size_in_mb: 128 +# Maximum size for a single hints file, in mebibytes. +# Min unit: MiB +max_hints_file_size: 128MiB + +# The file size limit to store hints for an unreachable host, in mebibytes. +# Once the local hints files have reached the limit, no more new hints will be created. +# Set a non-positive value will disable the size limit. +# max_hints_size_per_host: 0MiB + +# Enable / disable automatic cleanup for the expired and orphaned hints file. +# Disable the option in order to preserve those hints on the disk. +auto_hints_cleanup_enabled: false + # Enable/disable transfering hints to a peer during decommission. Even when enabled, this does not guarantee + # consistency for logged batches, and it may delay decommission when coupled with a strict hinted_handoff_throttle. + # Default: true -#transfer_hints_on_decommission: true ++# transfer_hints_on_decommission: true + # Compression to apply to the hint files. If omitted, hints files # will be written uncompressed. LZ4, Snappy, and Deflate compressors # are supported. diff --cc src/java/org/apache/cassandra/config/Config.java index 298903acf3,dc17639f98..3a62aae7c7 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@@ -409,19 -290,13 +409,20 @@@ public class Confi public InternodeCompression internode_compression = InternodeCompression.none; -public int hinted_handoff_throttle_in_kb = 1024; -public int batchlog_replay_throttle_in_kb = 1024; +@Replaces(oldName = "hinted_handoff_throttle_in_kb", converter = Converters.KIBIBYTES_DATASTORAGE, deprecated = true) +public DataStorageSpec.IntKibibytesBound hinted_handoff_throttle = new DataStorageSpec.IntKibibytesBound("1024KiB"); +@Replaces(oldName = "batchlog_replay_throttle_in_kb", converter = Converters.KIBIBYTES_DATASTORAGE, deprecated = true) +public DataStorageSpec.IntKibibytesBound batchlog_replay_throttle = new DataStorageSpec.IntKibibytesBound("1024KiB"); public int max_hints_delivery_threads = 2; -public int hints_flush_period_in_ms = 1; -public int max_hints_file_size_in_mb = 128; +@Replaces(oldName = "hints_flush_period_in_ms", converter = Converters.MILLIS_DURATION_INT, deprecated = true) +public DurationSpec.IntMillisecondsBound hints_flush_period = new DurationSpec.IntMillisecondsBound("10s"); +@Replaces(oldName = "max_hints_file_size_in_mb", converter = Converters.MEBIBYTES_DATA_STORAGE_INT, deprecated = true) +public DataStorageSpec.IntMebibytesBound max_hints_file_size = new DataStorageSpec.IntMebibytesBound("128MiB"); +public volatile DataStorageSpec.LongBytesBound max_hint
(cassandra) branch cassandra-4.1 updated (5fb562d7ef -> 39bd3c2261)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git from 5fb562d7ef Fix hints delivery for a node going down repeatedly new 0974a3656d Optionally avoid hint transfer during decommission new 39bd3c2261 Merge branch 'cassandra-4.0' into cassandra-4.1 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 + conf/cassandra.yaml| 5 +++ src/java/org/apache/cassandra/config/Config.java | 1 + .../cassandra/config/DatabaseDescriptor.java | 9 + .../cassandra/hints/HintsDispatchExecutor.java | 21 ++ .../apache/cassandra/service/StorageService.java | 28 -- .../cassandra/service/StorageServiceMBean.java | 4 ++ .../test/HintedHandoffAddRemoveNodesTest.java | 45 +- 8 files changed, 103 insertions(+), 11 deletions(-) - 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-4.1' into cassandra-5.0
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 7c29439cef3d3649b8e75bd0e716feed832b1999 Merge: 9752ceb439 39bd3c2261 Author: Caleb Rackliffe AuthorDate: Mon Apr 8 15:29:17 2024 -0500 Merge branch 'cassandra-4.1' into cassandra-5.0 * cassandra-4.1: Optionally avoid hint transfer during decommission - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (7623e4678b -> cddfd7f17a)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 7623e4678b The result of applying a metadata snapshot via ForceSnapshot should return the correct set of modified keys new 0974a3656d Optionally avoid hint transfer during decommission new 39bd3c2261 Merge branch 'cassandra-4.0' into cassandra-4.1 new 7c29439cef Merge branch 'cassandra-4.1' into cassandra-5.0 new cddfd7f17a Merge branch 'cassandra-5.0' 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) branch cassandra-4.0 updated: Optionally avoid hint transfer during decommission
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-4.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-4.0 by this push: new 0974a3656d Optionally avoid hint transfer during decommission 0974a3656d is described below commit 0974a3656dd4fd98b527264a763b50980f49be24 Author: Caleb Rackliffe AuthorDate: Fri Apr 5 15:26:39 2024 -0500 Optionally avoid hint transfer during decommission patch by Paul Chandler; reviewed by Caleb Rackliffe and Brandon Williams for CASSANDRA-19525 --- CHANGES.txt| 1 + conf/cassandra.yaml| 5 +++ src/java/org/apache/cassandra/config/Config.java | 1 + .../cassandra/config/DatabaseDescriptor.java | 10 + .../cassandra/hints/HintsDispatchExecutor.java | 20 ++ .../apache/cassandra/service/StorageService.java | 29 +-- .../cassandra/service/StorageServiceMBean.java | 3 ++ .../test/HintedHandoffAddRemoveNodesTest.java | 43 ++ 8 files changed, 102 insertions(+), 10 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 20f4fd47ea..b71ca9254f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.0.13 + * Optionally avoid hint transfer during decommission (CASSANDRA-19525) * Change logging to TRACE when failing to get peer certificate (CASSANDRA-19508) * Push LocalSessions info logs to debug (CASSANDRA-18335) * Filter remote DC replicas out when constructing the initial replica plan for the local read repair (CASSANDRA-19120) diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index 7f162749d2..b5e6af8767 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -86,6 +86,11 @@ hints_flush_period_in_ms: 1 # Maximum size for a single hints file, in megabytes. max_hints_file_size_in_mb: 128 +# Enable/disable transfering hints to a peer during decommission. Even when enabled, this does not guarantee +# consistency for logged batches, and it may delay decommission when coupled with a strict hinted_handoff_throttle. +# Default: true +#transfer_hints_on_decommission: true + # Compression to apply to the hint files. If omitted, hints files # will be written uncompressed. LZ4, Snappy, and Deflate compressors # are supported. diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index d7517124df..dc17639f98 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -296,6 +296,7 @@ public class Config public int hints_flush_period_in_ms = 1; public int max_hints_file_size_in_mb = 128; public ParameterizedClass hints_compression; +public volatile boolean transfer_hints_on_decommission = true; public volatile boolean incremental_backups = false; public boolean trickle_fsync = false; diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index 377f67117d..561fc24116 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -2596,6 +2596,16 @@ public class DatabaseDescriptor conf.hints_compression = parameterizedClass; } +public static boolean getTransferHintsOnDecommission() +{ +return conf.transfer_hints_on_decommission; +} + +public static void setTransferHintsOnDecommission(boolean enabled) +{ +conf.transfer_hints_on_decommission = enabled; +} + public static boolean isIncrementalBackupsEnabled() { return conf.incremental_backups; diff --git a/src/java/org/apache/cassandra/hints/HintsDispatchExecutor.java b/src/java/org/apache/cassandra/hints/HintsDispatchExecutor.java index b5eb0b1fac..54e13f428b 100644 --- a/src/java/org/apache/cassandra/hints/HintsDispatchExecutor.java +++ b/src/java/org/apache/cassandra/hints/HintsDispatchExecutor.java @@ -182,7 +182,7 @@ final class HintsDispatchExecutor private boolean transfer(UUID hostId) { catalog.stores() - .map(store -> new DispatchHintsTask(store, hostId)) + .map(store -> new DispatchHintsTask(store, hostId, true)) .forEach(Runnable::run); return !catalog.hasFiles(); @@ -195,21 +195,27 @@ final class HintsDispatchExecutor private final UUID hostId; private final RateLimiter rateLimiter; -DispatchHintsTask(HintsStore store, UUID hostId) +DispatchHintsTask(HintsStore store, UUID hostId, boolean isTransfer) { this.store = store; this.hostId = hostId; -// rate limit is in bytes per second. Uses Double.MAX_VALUE if disabled (se
(cassandra) branch trunk updated (2e7def7626 -> b37f47b3ee)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 2e7def7626 Expose all dropwizard metrics in virtual tables new be507c6e99 Warn clients about possible consistency violations for filtering queries against multiple mutable columns new b37f47b3ee Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + src/java/org/apache/cassandra/config/Config.java | 2 + .../apache/cassandra/config/GuardrailsOptions.java | 29 + .../org/apache/cassandra/cql3/QueryProcessor.java | 2 +- .../apache/cassandra/cql3/UntypedResultSet.java| 4 +- .../cql3/restrictions/StatementRestrictions.java | 3 +- .../cassandra/cql3/statements/SelectStatement.java | 45 .../org/apache/cassandra/db/filter/RowFilter.java | 10 +- .../apache/cassandra/db/guardrails/Guardrails.java | 39 +++ .../cassandra/db/guardrails/GuardrailsConfig.java | 16 +++ .../cassandra/db/guardrails/GuardrailsMBean.java | 16 +++ .../GuardrailNonPartitionRestrictedQueryTest.java | 37 ++- .../test/guardrails/GuardrailTester.java | 41 ++- .../guardrails/IntersectFilteringQueryTest.java| 120 + 14 files changed, 311 insertions(+), 54 deletions(-) create mode 100644 test/distributed/org/apache/cassandra/distributed/test/guardrails/IntersectFilteringQueryTest.java - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit b37f47b3ee8c291e8cbbd95f91b3fe04df50cfa4 Merge: 2e7def7626 be507c6e99 Author: Caleb Rackliffe AuthorDate: Wed Apr 3 16:37:43 2024 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Warn clients about possible consistency violations for filtering queries against multiple mutable columns CHANGES.txt| 1 + src/java/org/apache/cassandra/config/Config.java | 2 + .../apache/cassandra/config/GuardrailsOptions.java | 29 + .../org/apache/cassandra/cql3/QueryProcessor.java | 2 +- .../apache/cassandra/cql3/UntypedResultSet.java| 4 +- .../cql3/restrictions/StatementRestrictions.java | 3 +- .../cassandra/cql3/statements/SelectStatement.java | 45 .../org/apache/cassandra/db/filter/RowFilter.java | 10 +- .../apache/cassandra/db/guardrails/Guardrails.java | 39 +++ .../cassandra/db/guardrails/GuardrailsConfig.java | 16 +++ .../cassandra/db/guardrails/GuardrailsMBean.java | 16 +++ .../GuardrailNonPartitionRestrictedQueryTest.java | 37 ++- .../test/guardrails/GuardrailTester.java | 41 ++- .../guardrails/IntersectFilteringQueryTest.java| 120 + 14 files changed, 311 insertions(+), 54 deletions(-) diff --cc CHANGES.txt index 3703a0bf04,cb3e2676cb..c8ce4d9fae --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,33 -1,5 +1,34 @@@ -5.0-beta2 +5.1 + * Expose all dropwizard metrics in virtual tables (CASSANDRA-14572) + * Ensured that PropertyFileSnitchTest do not overwrite cassandra-toploogy.properties (CASSANDRA-19502) + * Add option for MutualTlsAuthenticator to restrict the certificate validity period (CASSANDRA-18951) + * Fix StorageService::constructRangeToEndpointMap for non-distributed keyspaces (CASSANDRA-19255) + * Group nodetool cms commands into single command group (CASSANDRA-19393) + * Register the measurements of the bootstrap process as Dropwizard metrics (CASSANDRA-19447) + * Add LIST SUPERUSERS CQL statement (CASSANDRA-19417) + * Modernize CQLSH datetime conversions (CASSANDRA-18879) + * Harry model and in-JVM tests for partition-restricted 2i queries (CASSANDRA-18275) + * Refactor cqlshmain global constants (CASSANDRA-19201) + * Remove native_transport_port_ssl (CASSANDRA-19397) + * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) + * Expose auth mode in system_views.clients, nodetool clientstats, metrics (CASSANDRA-19366) + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189) + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271) + * Refactor structure of caching metrics and expose auth cache metrics via JMX (CASSANDRA-17062) + * Allow CQL client certificate authentication to work without sending an AUTHENTICATE request (CASSANDRA-18857) + * Extend nodetool tpstats and system_views.thread_pools with detailed pool parameters (CASSANDRA-19289) + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565) + * Simplify the bind marker and Term logic (CASSANDRA-18813) + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688) + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104) + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015) + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875) + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330) + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Warn clients about possible consistency violations for filtering queries against multiple mutable columns (CASSANDRA-19489) * Align buffer with commitlog segment size (CASSANDRA-19471) * Ensure SAI indexes empty byte buffers for types that allow them as a valid input (CASSANDRA-19461) * Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 (CASSANDRA-19467) diff --cc src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java index 9e145a2208,4f6b829191..587cc41638 --- a/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/StatementRestrictions.java @@@ -781,7 -780,8 +781,8 @@@ public final class StatementRestriction return RowFilter.none(); // If there is only one replica, we don't need reconciliation at any consistency level. - boolean needsReconciliation = options.getConsistency().needsReconciliation
(cassandra) branch cassandra-5.0 updated: Warn clients about possible consistency violations for filtering queries against multiple mutable columns
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new be507c6e99 Warn clients about possible consistency violations for filtering queries against multiple mutable columns be507c6e99 is described below commit be507c6e996078011c08e36b09d9f34faa454973 Author: Caleb Rackliffe AuthorDate: Mon Apr 1 14:18:05 2024 -0500 Warn clients about possible consistency violations for filtering queries against multiple mutable columns patch by Caleb Rackliffe; reviewed by David Capwell and Berenguer Blasi for CASSANDRA-19489 --- CHANGES.txt| 1 + src/java/org/apache/cassandra/config/Config.java | 2 + .../apache/cassandra/config/GuardrailsOptions.java | 29 + .../org/apache/cassandra/cql3/QueryProcessor.java | 2 +- .../apache/cassandra/cql3/UntypedResultSet.java| 4 +- .../cql3/restrictions/StatementRestrictions.java | 3 +- .../cassandra/cql3/statements/SelectStatement.java | 45 .../org/apache/cassandra/db/filter/RowFilter.java | 10 +- .../apache/cassandra/db/guardrails/Guardrails.java | 39 +++ .../cassandra/db/guardrails/GuardrailsConfig.java | 16 +++ .../cassandra/db/guardrails/GuardrailsMBean.java | 16 +++ .../GuardrailNonPartitionRestrictedQueryTest.java | 37 ++- .../test/guardrails/GuardrailTester.java | 41 ++- .../guardrails/IntersectFilteringQueryTest.java| 120 + 14 files changed, 311 insertions(+), 54 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index e879141be7..cb3e2676cb 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Warn clients about possible consistency violations for filtering queries against multiple mutable columns (CASSANDRA-19489) * Align buffer with commitlog segment size (CASSANDRA-19471) * Ensure SAI indexes empty byte buffers for types that allow them as a valid input (CASSANDRA-19461) * Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 (CASSANDRA-19467) diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index d97f35d759..aa0f3ee476 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -905,6 +905,8 @@ public class Config public volatile boolean non_partition_restricted_index_query_enabled = true; public volatile int sai_sstable_indexes_per_query_warn_threshold = 32; public volatile int sai_sstable_indexes_per_query_fail_threshold = -1; +public volatile boolean intersect_filtering_query_warned = true; +public volatile boolean intersect_filtering_query_enabled = true; public volatile DurationSpec.LongNanosecondsBound streaming_state_expires = new DurationSpec.LongNanosecondsBound("3d"); public volatile DataStorageSpec.LongBytesBound streaming_state_size = new DataStorageSpec.LongBytesBound("40MiB"); diff --git a/src/java/org/apache/cassandra/config/GuardrailsOptions.java b/src/java/org/apache/cassandra/config/GuardrailsOptions.java index 2c36a2a03d..8d7bd52197 100644 --- a/src/java/org/apache/cassandra/config/GuardrailsOptions.java +++ b/src/java/org/apache/cassandra/config/GuardrailsOptions.java @@ -846,6 +846,35 @@ public class GuardrailsOptions implements GuardrailsConfig x -> config.zero_ttl_on_twcs_enabled = x); } +@Override +public boolean getIntersectFilteringQueryWarned() +{ +return config.intersect_filtering_query_warned; +} + +@Override +public void setIntersectFilteringQueryWarned(boolean value) +{ +updatePropertyWithLogging("intersect_filtering_query_warned", + value, + () -> config.intersect_filtering_query_warned, + x -> config.intersect_filtering_query_warned = x); +} + +@Override +public boolean getIntersectFilteringQueryEnabled() +{ +return config.intersect_filtering_query_enabled; +} + +public void setIntersectFilteringQueryEnabled(boolean value) +{ +updatePropertyWithLogging("intersect_filtering_query_enabled", + value, + () -> config.intersect_filtering_query_enabled, + x -> config.intersect_filtering_query_enabled = x); +} + @Override public DurationSpec.LongMicrosecondsBound getMaximumTimestampWarnThreshold() { diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java index fba424d7d9..15c
(cassandra) branch trunk updated (a69c8657d7 -> c50718fd3d)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from a69c8657d7 Fix getRangeTo* operations of StorageService mbean for local strategy keyspaces new 46acaf22e6 Ensure SAI indexes empty byte buffers for types that allow them as a valid input new c50718fd3d Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../statements/schema/CreateIndexStatement.java| 2 +- .../index/sai/disk/v1/SSTableIndexWriter.java | 3 +- .../cassandra/index/sai/memory/MemtableIndex.java | 5 +- test/unit/accord/utils/Gens.java | 70 +--- .../index/sai/cql/AbstractSimpleEqTestBase.java| 92 + .../index/sai/cql/AllTypesSimpleEqTest.java| 95 ++ .../index/sai/cql/EmptyStringLifecycleTest.java| 79 ++ .../org/apache/cassandra/utils/Generators.java | 9 ++ 9 files changed, 343 insertions(+), 13 deletions(-) create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/AbstractSimpleEqTestBase.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/AllTypesSimpleEqTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/EmptyStringLifecycleTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated: Ensure SAI indexes empty byte buffers for types that allow them as a valid input
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new 46acaf22e6 Ensure SAI indexes empty byte buffers for types that allow them as a valid input 46acaf22e6 is described below commit 46acaf22e688e7a2e707ac61fd88c96ed33b60d7 Author: Caleb Rackliffe AuthorDate: Fri Mar 15 17:29:01 2024 -0500 Ensure SAI indexes empty byte buffers for types that allow them as a valid input patch by Caleb Rackliffe; reviewed by David Capwell for CASSANDRA-19461 Co-authored-by: Caleb Rackliffe Co-authored-by: David Capwell --- CHANGES.txt| 1 + .../statements/schema/CreateIndexStatement.java| 2 +- .../index/sai/disk/v1/SSTableIndexWriter.java | 3 +- .../cassandra/index/sai/memory/MemtableIndex.java | 5 +- test/unit/accord/utils/Gens.java | 70 +--- .../index/sai/cql/AbstractSimpleEqTestBase.java| 92 + .../index/sai/cql/AllTypesSimpleEqTest.java| 95 ++ .../index/sai/cql/EmptyStringLifecycleTest.java| 79 ++ .../org/apache/cassandra/utils/Generators.java | 9 ++ 9 files changed, 343 insertions(+), 13 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 056c84a82b..c056c2785f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Ensure SAI indexes empty byte buffers for types that allow them as a valid input (CASSANDRA-19461) * Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 (CASSANDRA-19467) * Set uuid_sstable_identifiers_enabled to true in cassandra-latest.yaml (CASSANDRA-19460) * Revert switching to approxTime in Dispatcher (CASSANDRA-19454) diff --git a/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java b/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java index b53e066f90..9f5bbfe058 100644 --- a/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java @@ -242,7 +242,7 @@ public final class CreateIndexStatement extends AlterSchemaStatement throw ire(ONLY_PARTITION_KEY, column); if (column.type.isFrozenCollection() && target.type != Type.FULL) -throw ire(CREATE_ON_FROZEN_COLUMN, target.type, column, column); +throw ire(CREATE_ON_FROZEN_COLUMN, target.type, column, column.name.toCQLString()); if (!column.type.isFrozenCollection() && target.type == Type.FULL) throw ire(FULL_ON_FROZEN_COLLECTIONS); diff --git a/src/java/org/apache/cassandra/index/sai/disk/v1/SSTableIndexWriter.java b/src/java/org/apache/cassandra/index/sai/disk/v1/SSTableIndexWriter.java index 3400f81b9d..06bb7d80fe 100644 --- a/src/java/org/apache/cassandra/index/sai/disk/v1/SSTableIndexWriter.java +++ b/src/java/org/apache/cassandra/index/sai/disk/v1/SSTableIndexWriter.java @@ -200,7 +200,8 @@ public class SSTableIndexWriter implements PerColumnIndexWriter currentBuilder = newSegmentBuilder(); } -if (term.remaining() == 0) return; +// Some types support empty byte buffers: +if (term.remaining() == 0 && !index.termType().indexType().allowsEmpty()) return; if (analyzer == null || !index.termType().isLiteral()) { diff --git a/src/java/org/apache/cassandra/index/sai/memory/MemtableIndex.java b/src/java/org/apache/cassandra/index/sai/memory/MemtableIndex.java index d124af651e..f0f2ea36ad 100644 --- a/src/java/org/apache/cassandra/index/sai/memory/MemtableIndex.java +++ b/src/java/org/apache/cassandra/index/sai/memory/MemtableIndex.java @@ -28,6 +28,7 @@ import java.util.function.Function; import org.apache.cassandra.db.Clustering; import org.apache.cassandra.db.DecoratedKey; import org.apache.cassandra.db.PartitionPosition; +import org.apache.cassandra.db.marshal.AbstractType; import org.apache.cassandra.dht.AbstractBounds; import org.apache.cassandra.index.sai.QueryContext; import org.apache.cassandra.index.sai.StorageAttachedIndex; @@ -46,10 +47,12 @@ public class MemtableIndex implements MemtableOrdering private final MemoryIndex memoryIndex; private final LongAdder writeCount = new LongAdder(); private final LongAdder estimatedMemoryUsed = new LongAdder(); +private final AbstractType type; public MemtableIndex(StorageAttachedIndex index) { this.memoryIndex = index.termType().isVector() ? new VectorMemoryIndex(index) : new TrieMemoryIndex(index); +this.type = index.termType().indexType(); } public long writeCount() @@ -79,7 +82,7 @@ public class MemtableIndex implements MemtableOrdering
(cassandra) 01/01: Merge branch 'cassandra-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit c50718fd3d96a26e74652616256746baebfb0813 Merge: a69c8657d7 46acaf22e6 Author: Caleb Rackliffe AuthorDate: Fri Mar 22 11:44:40 2024 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Ensure SAI indexes empty byte buffers for types that allow them as a valid input CHANGES.txt| 1 + .../statements/schema/CreateIndexStatement.java| 2 +- .../index/sai/disk/v1/SSTableIndexWriter.java | 3 +- .../cassandra/index/sai/memory/MemtableIndex.java | 5 +- test/unit/accord/utils/Gens.java | 70 +--- .../index/sai/cql/AbstractSimpleEqTestBase.java| 92 + .../index/sai/cql/AllTypesSimpleEqTest.java| 95 ++ .../index/sai/cql/EmptyStringLifecycleTest.java| 79 ++ .../org/apache/cassandra/utils/Generators.java | 9 ++ 9 files changed, 343 insertions(+), 13 deletions(-) diff --cc CHANGES.txt index 7a63df43cc,c056c2785f..1e34cbe71e --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,30 -1,5 +1,31 @@@ -5.0-beta2 +5.1 + * Fix StorageService::constructRangeToEndpointMap for non-distributed keyspaces (CASSANDRA-19255) + * Group nodetool cms commands into single command group (CASSANDRA-19393) + * Register the measurements of the bootstrap process as Dropwizard metrics (CASSANDRA-19447) + * Add LIST SUPERUSERS CQL statement (CASSANDRA-19417) + * Modernize CQLSH datetime conversions (CASSANDRA-18879) + * Harry model and in-JVM tests for partition-restricted 2i queries (CASSANDRA-18275) + * Refactor cqlshmain global constants (CASSANDRA-19201) + * Remove native_transport_port_ssl (CASSANDRA-19397) + * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) + * Expose auth mode in system_views.clients, nodetool clientstats, metrics (CASSANDRA-19366) + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189) + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271) + * Refactor structure of caching metrics and expose auth cache metrics via JMX (CASSANDRA-17062) + * Allow CQL client certificate authentication to work without sending an AUTHENTICATE request (CASSANDRA-18857) + * Extend nodetool tpstats and system_views.thread_pools with detailed pool parameters (CASSANDRA-19289) + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565) + * Simplify the bind marker and Term logic (CASSANDRA-18813) + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688) + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104) + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015) + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875) + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330) + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Ensure SAI indexes empty byte buffers for types that allow them as a valid input (CASSANDRA-19461) * Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 (CASSANDRA-19467) * Set uuid_sstable_identifiers_enabled to true in cassandra-latest.yaml (CASSANDRA-19460) * Revert switching to approxTime in Dispatcher (CASSANDRA-19454) - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 8f7c23be85f3298f90d10ff9b39fa29a706f134d Merge: 3e6a551dba 8a33f32350 Author: Caleb Rackliffe AuthorDate: Tue Mar 19 23:46:18 2024 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 CHANGES.txt | 1 + NEWS.txt | 4 ++-- bin/cqlsh| 14 +++--- bin/cqlsh.py | 4 ++-- pylib/cqlshlib/test/run_cqlsh.py | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --cc CHANGES.txt index c1b07e384f,056c84a82b..98c4245a93 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,29 -1,5 +1,30 @@@ -5.0-beta2 +5.1 + * Group nodetool cms commands into single command group (CASSANDRA-19393) + * Register the measurements of the bootstrap process as Dropwizard metrics (CASSANDRA-19447) + * Add LIST SUPERUSERS CQL statement (CASSANDRA-19417) + * Modernize CQLSH datetime conversions (CASSANDRA-18879) + * Harry model and in-JVM tests for partition-restricted 2i queries (CASSANDRA-18275) + * Refactor cqlshmain global constants (CASSANDRA-19201) + * Remove native_transport_port_ssl (CASSANDRA-19397) + * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) + * Expose auth mode in system_views.clients, nodetool clientstats, metrics (CASSANDRA-19366) + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189) + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271) + * Refactor structure of caching metrics and expose auth cache metrics via JMX (CASSANDRA-17062) + * Allow CQL client certificate authentication to work without sending an AUTHENTICATE request (CASSANDRA-18857) + * Extend nodetool tpstats and system_views.thread_pools with detailed pool parameters (CASSANDRA-19289) + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565) + * Simplify the bind marker and Term logic (CASSANDRA-18813) + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688) + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104) + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015) + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875) + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330) + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 (CASSANDRA-19467) * Set uuid_sstable_identifiers_enabled to true in cassandra-latest.yaml (CASSANDRA-19460) * Revert switching to approxTime in Dispatcher (CASSANDRA-19454) * Add an optimized default configuration to tests and make it available for new users (CASSANDRA-18753) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (3e6a551dba -> 8f7c23be85)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 3e6a551dba TCM: Catch up committing node on rejection new 8a33f32350 Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 new 8f7c23be85 Merge branch 'cassandra-5.0' 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: CHANGES.txt | 1 + NEWS.txt | 4 ++-- bin/cqlsh| 14 +++--- bin/cqlsh.py | 4 ++-- pylib/cqlshlib/test/run_cqlsh.py | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated: Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new 8a33f32350 Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 8a33f32350 is described below commit 8a33f323508dab061dbebfd168e431cd0e683e01 Author: Caleb Rackliffe AuthorDate: Fri Mar 15 18:41:01 2024 -0500 Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 patch by Caleb Rackliffe; reviewed by Brandon Williams and Stefan Miklosovic for CASSANDRA-19467 --- CHANGES.txt | 1 + NEWS.txt | 4 ++-- bin/cqlsh| 14 +++--- bin/cqlsh.py | 4 ++-- pylib/cqlshlib/test/run_cqlsh.py | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index a56ec17d01..056c84a82b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Deprecate Python 3.7 and earlier, but allow cqlsh to run with Python 3.6-3.11 (CASSANDRA-19467) * Set uuid_sstable_identifiers_enabled to true in cassandra-latest.yaml (CASSANDRA-19460) * Revert switching to approxTime in Dispatcher (CASSANDRA-19454) * Add an optimized default configuration to tests and make it available for new users (CASSANDRA-18753) diff --git a/NEWS.txt b/NEWS.txt index 0a128f2a36..c074867069 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -203,8 +203,8 @@ Upgrading - - Default disk_access_mode value changed from "auto" to "mmap_index_only". Override this setting with "disk_access_mode: auto" on cassandra.yaml to keep the previous default. See CASSANDRA-19021 for details. -- The Python version required to run cqlsh has been bumped from 3.6+ to 3.8-3.11. Python 3.6 and 3.7 are past their - end-of-life, and 3.8 is now the minimum version supported by the Python driver. +- The Python versions recommended for running cqlsh have been bumped from 3.6+ to 3.8-3.11. Python 3.6-3.7 are now + deprecated, as they have reached end-of-life, and support will be removed in a future major release. - Java 8 has been removed. Lowest supported version is Java 11. - Ephemeral marker files for snapshots done by repairs are not created anymore, there is a dedicated flag in snapshot manifest instead. On upgrade of a node to this version, on node's start, in case there diff --git a/bin/cqlsh b/bin/cqlsh index 8d4e482058..2a9651968b 100755 --- a/bin/cqlsh +++ b/bin/cqlsh @@ -62,9 +62,12 @@ is_supported_version() { version=$1 major_version="${version%.*}" minor_version="${version#*.}" -# python 3.8-3.11 is supported +# python 3.8-3.11 are supported if [ "$major_version" = 3 ] && [ "$minor_version" -ge 8 ] && [ "$minor_version" -le 11 ]; then echo "supported" +# python 3.6-3.7 are deprecated +elif [ "$major_version" = 3 ] && [ "$minor_version" -ge 6 ] && [ "$minor_version" -le 7 ]; then +echo "deprecated" else echo "unsupported" fi @@ -75,12 +78,17 @@ run_if_supported_version() { interpreter="$1" shift version=$(get_python_version "$interpreter") +version_status=$(is_supported_version "$version") if [ -n "$version" ]; then -if [ "$(is_supported_version "$version")" = "supported" ]; then +if [ "$version_status" = "supported" ] || [ "$version_status" = "deprecated" ]; then +if [ "$version_status" = "deprecated" ]; then +echo "Warning: using deprecated version of Python:" "$version" >&2 +fi + exec "$interpreter" "$($interpreter -c "import os; print(os.path.dirname(os.path.realpath('$0')))")/cqlsh.py" "$@" exit else -echo "Warning: unsupported version of Python, required 3.8-3.11 but found" $version >&2 +echo "Warning: unsupported version of Python, required 3.6-3.11 but found" "$version" >&2 fi fi } diff --git a/bin/cqlsh.py b/bin/cqlsh.py index 4b026f3352..738f0aeeb7 100755 --- a/bin/cqlsh.py +++ b/bin/cqlsh.py @@ -21,8 +21,8 @@ import platform import sys from glob import glob -if sys.version_info < (3, 8) or sys.version_info >= (3, 12): -sys.exit("\ncqlsh requires Python 3.8-3.11\n") +if sys.version_info < (3, 6) or sys.version_info >= (3, 12): +sys.exit("\ncqlsh requires Pyth
(cassandra) branch trunk updated (28efb63df5 -> baef2447bb)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 28efb63df5 Merge branch 'cassandra-5.0' into trunk new a26fa6cf2c Revert switching to approxTime in Dispatcher new baef2447bb Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../apache/cassandra/db/virtual/QueriesTable.java | 5 +++-- .../org/apache/cassandra/transport/Dispatcher.java | 22 +++--- .../cassandra/transport/MessageDispatcherTest.java | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit baef2447bb3f9fc4d1d3326df39ee8437d999711 Merge: 28efb63df5 a26fa6cf2c Author: Caleb Rackliffe AuthorDate: Thu Mar 7 16:05:51 2024 -0600 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Revert switching to approxTime in Dispatcher CHANGES.txt| 1 + .../apache/cassandra/db/virtual/QueriesTable.java | 5 +++-- .../org/apache/cassandra/transport/Dispatcher.java | 22 +++--- .../cassandra/transport/MessageDispatcherTest.java | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) diff --cc CHANGES.txt index 06df50e173,cf542bbd58..9fc8dc5c45 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,26 -1,5 +1,27 @@@ -5.0-beta2 +5.1 + * Modernize CQLSH datetime conversions (CASSANDRA-18879) + * Harry model and in-JVM tests for partition-restricted 2i queries (CASSANDRA-18275) + * Refactor cqlshmain global constants (CASSANDRA-19201) + * Remove native_transport_port_ssl (CASSANDRA-19397) + * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) + * Expose auth mode in system_views.clients, nodetool clientstats, metrics (CASSANDRA-19366) + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189) + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271) + * Refactor structure of caching metrics and expose auth cache metrics via JMX (CASSANDRA-17062) + * Allow CQL client certificate authentication to work without sending an AUTHENTICATE request (CASSANDRA-18857) + * Extend nodetool tpstats and system_views.thread_pools with detailed pool parameters (CASSANDRA-19289) + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565) + * Simplify the bind marker and Term logic (CASSANDRA-18813) + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688) + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104) + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015) + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875) + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330) + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Revert switching to approxTime in Dispatcher (CASSANDRA-19454) * Add an optimized default configuration to tests and make it available for new users (CASSANDRA-18753) * Fix remote JMX under Java17 (CASSANDRA-19453) * Avoid consistency violations for SAI intersections over unrepaired data at consistency levels requiring reconciliation (CASSANDRA-19018) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated: Revert switching to approxTime in Dispatcher
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new a26fa6cf2c Revert switching to approxTime in Dispatcher a26fa6cf2c is described below commit a26fa6cf2c9a86827d38c448a54878d76bb18e27 Author: arkn98 <20590666+ark...@users.noreply.github.com> AuthorDate: Wed Mar 6 13:35:32 2024 -0500 Revert switching to approxTime in Dispatcher Patch by Arun Ganesh; reviewed by Caleb Rackliffe and David Capwell for CASSANDRA-19454 --- CHANGES.txt| 1 + .../apache/cassandra/db/virtual/QueriesTable.java | 5 +++-- .../org/apache/cassandra/transport/Dispatcher.java | 22 +++--- .../cassandra/transport/MessageDispatcherTest.java | 2 +- 4 files changed, 16 insertions(+), 14 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 4a005b4aab..cf542bbd58 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Revert switching to approxTime in Dispatcher (CASSANDRA-19454) * Add an optimized default configuration to tests and make it available for new users (CASSANDRA-18753) * Fix remote JMX under Java17 (CASSANDRA-19453) * Avoid consistency violations for SAI intersections over unrepaired data at consistency levels requiring reconciliation (CASSANDRA-19018) diff --git a/src/java/org/apache/cassandra/db/virtual/QueriesTable.java b/src/java/org/apache/cassandra/db/virtual/QueriesTable.java index aeba61c004..f2a4d72168 100644 --- a/src/java/org/apache/cassandra/db/virtual/QueriesTable.java +++ b/src/java/org/apache/cassandra/db/virtual/QueriesTable.java @@ -26,7 +26,8 @@ import org.apache.cassandra.schema.TableMetadata; import static java.lang.Long.max; import static java.util.concurrent.TimeUnit.NANOSECONDS; -import static org.apache.cassandra.utils.MonotonicClock.Global.approxTime; + +import static org.apache.cassandra.utils.Clock.Global.nanoTime; /** * Virtual table that lists currently running queries on the NTR (coordinator) and Read/Mutation (local) stages @@ -78,7 +79,7 @@ final class QueriesTable extends AbstractVirtualTable long creationTimeNanos = task.creationTimeNanos(); long startTimeNanos = task.startTimeNanos(); -long now = approxTime.now(); +long now = nanoTime(); long queuedMicros = NANOSECONDS.toMicros(max((startTimeNanos > 0 ? startTimeNanos : now) - creationTimeNanos, 0)); long runningMicros = startTimeNanos > 0 ? NANOSECONDS.toMicros(now - startTimeNanos) : 0; diff --git a/src/java/org/apache/cassandra/transport/Dispatcher.java b/src/java/org/apache/cassandra/transport/Dispatcher.java index f21acc2c6d..38cb9326de 100644 --- a/src/java/org/apache/cassandra/transport/Dispatcher.java +++ b/src/java/org/apache/cassandra/transport/Dispatcher.java @@ -44,10 +44,10 @@ import org.apache.cassandra.transport.Flusher.FlushItem; import org.apache.cassandra.transport.messages.ErrorMessage; import org.apache.cassandra.transport.messages.EventMessage; import org.apache.cassandra.utils.JVMStabilityInspector; -import org.apache.cassandra.utils.MonotonicClock; import org.apache.cassandra.utils.NoSpamLogger; import static org.apache.cassandra.concurrent.SharedExecutorPool.SHARED; +import static org.apache.cassandra.utils.Clock.Global.nanoTime; public class Dispatcher { @@ -119,8 +119,8 @@ public class Dispatcher private final FlushItemConverter forFlusher; private final Overload backpressure; -private final long approxCreationTimeNanos = MonotonicClock.Global.approxTime.now(); -private volatile long approxStartTimeNanos; +private final long creationTimeNanos = nanoTime(); +private volatile long startTimeNanos; public RequestProcessor(Channel channel, Message.Request request, FlushItemConverter forFlusher, Overload backpressure) { @@ -133,20 +133,20 @@ public class Dispatcher @Override public void run() { -approxStartTimeNanos = MonotonicClock.Global.approxTime.now(); -processRequest(channel, request, forFlusher, backpressure, approxStartTimeNanos); +startTimeNanos = nanoTime(); +processRequest(channel, request, forFlusher, backpressure, startTimeNanos); } @Override public long creationTimeNanos() { -return approxCreationTimeNanos; +return creationTimeNanos; } @Override public long startTimeNanos() { -return approxStartTimeNanos; +return startTimeNanos; } @Override @@ -206,11 +206,11 @@ public class Dispatcher /** * Note: this method may be executed on the nett
(cassandra) branch trunk updated: Harry model and in-JVM tests for partition-restricted 2i queries
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/trunk by this push: new 001f70367e Harry model and in-JVM tests for partition-restricted 2i queries 001f70367e is described below commit 001f70367e32bd44dc03c30d5533e549bbaea67e Author: Caleb Rackliffe AuthorDate: Thu Jan 11 23:13:56 2024 -0600 Harry model and in-JVM tests for partition-restricted 2i queries patch by Caleb Rackliffe; reviewed by Alex Petrov for CASSANDRA-18275 Co-authored-by: Caleb Rackliffe Co-authored-by: Alex Petrov --- CHANGES.txt| 1 + .../cassandra/fuzz/sai/MultiNodeSAITest.java | 102 +++ .../cassandra/fuzz/sai/SingleNodeSAITest.java | 310 + .../cassandra/fuzz/sai/StaticsTortureTest.java | 264 ++ .../org/apache/cassandra/harry/ddl/SchemaSpec.java | 35 ++- .../cassandra/harry/model/AgainstSutChecker.java | 32 ++- .../apache/cassandra/harry/model/SelectHelper.java | 39 +-- .../harry/model/reconciler/PartitionState.java | 1 - .../harry/operations/CompiledStatement.java| 7 + .../cassandra/harry/operations/FilteringQuery.java | 6 + .../cassandra/harry/sut/injvm/InJvmSutBase.java| 11 +- 11 files changed, 770 insertions(+), 38 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index fbbc57216b..f3c3096705 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.1 + * Harry model and in-JVM tests for partition-restricted 2i queries (CASSANDRA-18275) * Refactor cqlshmain global constants (CASSANDRA-19201) * Remove native_transport_port_ssl (CASSANDRA-19397) * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) diff --git a/test/distributed/org/apache/cassandra/fuzz/sai/MultiNodeSAITest.java b/test/distributed/org/apache/cassandra/fuzz/sai/MultiNodeSAITest.java new file mode 100644 index 00..b45b6f782b --- /dev/null +++ b/test/distributed/org/apache/cassandra/fuzz/sai/MultiNodeSAITest.java @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.fuzz.sai; + +import org.junit.Before; +import org.junit.BeforeClass; + +import org.apache.cassandra.distributed.Cluster; +import org.apache.cassandra.distributed.test.sai.SAIUtil; +import org.apache.cassandra.harry.ddl.SchemaSpec; +import org.apache.cassandra.harry.sut.injvm.InJvmSut; +import org.apache.cassandra.harry.sut.injvm.InJvmSutBase; + +import static org.apache.cassandra.distributed.api.Feature.GOSSIP; +import static org.apache.cassandra.distributed.api.Feature.NETWORK; + +public class MultiNodeSAITest extends SingleNodeSAITest +{ +/** + * Chosing a fetch size has implications for how well this test will excercise paging, short-read protection, and + * other important parts of the distributed query apparatus. This should be set low enough to ensure a significant + * number of queries during validation page, but not too low that more expesive queries time out and fail the test. + */ +private static final int FETCH_SIZE = 10; + +@BeforeClass +public static void before() throws Throwable +{ +cluster = Cluster.build() + .withNodes(2) + // At lower fetch sizes, queries w/ hundreds or thousands of matches can take a very long time. + .withConfig(InJvmSutBase.defaultConfig().andThen(c -> c.set("range_request_timeout", "180s").set("read_request_timeout", "180s") + .with(GOSSIP).with(NETWORK))) + .createWithoutStarting(); +cluster.setUncaughtExceptionsFilter(t -> { +logger.error("Caught exception, reporting during shutdown. Ignoring.", t); +return true; +}); +cluster.startup(); +cluster = init(cluster); +
(cassandra) 01/01: Merge branch 'cassandra-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 58f0e2146b3d7f0bd09c4dbd9d1da5e43f37ed73 Merge: cd347bdc58 f7984627e7 Author: Caleb Rackliffe AuthorDate: Thu Feb 29 15:04:19 2024 -0600 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Avoid possible consistency violations for SAI intersection queries over partially updated rows at consistency levels that require reconciliation CHANGES.txt| 1 + .../cql3/restrictions/StatementRestrictions.java | 6 +- .../cassandra/cql3/statements/SelectStatement.java | 9 +- .../cassandra/db/AbstractReadCommandBuilder.java | 2 +- .../org/apache/cassandra/db/ConsistencyLevel.java | 15 +- src/java/org/apache/cassandra/db/ReadCommand.java | 34 +- .../db/compaction/CompactionIterator.java | 29 +- .../org/apache/cassandra/db/filter/RowFilter.java | 243 +- .../cassandra/db/rows/UnfilteredRowIterators.java | 33 +- .../apache/cassandra/index/sai/QueryContext.java | 14 +- .../cassandra/index/sai/StorageAttachedIndex.java | 17 +- .../index/sai/disk/IndexSearchResultIterator.java | 14 +- .../index/sai/disk/PerColumnIndexWriter.java | 4 +- .../cassandra/index/sai/disk/RowMapping.java | 39 +- .../index/sai/disk/v1/MemtableIndexWriter.java | 38 +- .../index/sai/iterators/KeyRangeIterator.java | 2 +- .../index/sai/iterators/KeyRangeUnionIterator.java | 38 +- .../cassandra/index/sai/plan/FilterTree.java | 58 ++- .../apache/cassandra/index/sai/plan/Operation.java | 32 +- .../cassandra/index/sai/plan/QueryController.java | 95 +++- .../cassandra/index/sai/plan/QueryViewBuilder.java | 78 +--- .../sai/plan/StorageAttachedIndexQueryPlan.java| 30 +- .../sai/plan/StorageAttachedIndexSearcher.java | 68 +-- .../cassandra/service/reads/DataResolver.java | 55 ++- .../service/reads/ReplicaFilteringProtection.java | 86 ++-- .../reads/repair/RowIteratorMergeListener.java | 10 +- .../test/ReplicaFilteringProtectionTest.java | 78 ++-- .../test/sai/ConcurrencyFactorTest.java| 9 +- .../test/sai/PartialUpdateHandlingTest.java| 494 + .../test/sai/ReplicaFilteringProtectionTest.java | 67 --- .../distributed/test/sai/StrictFilteringTest.java | 227 ++ test/unit/org/apache/cassandra/db/CleanupTest.java | 2 +- .../org/apache/cassandra/db/ReadCommandTest.java | 6 +- .../db/ReadCommandVerbHandlerOutOfRangeTest.java | 4 +- .../cql/intersection/RandomIntersectionTester.java | 6 +- .../cassandra/index/sai/plan/OperationTest.java| 86 ++-- .../apache/cassandra/index/sasi/SASIIndexTest.java | 4 +- 37 files changed, 1408 insertions(+), 625 deletions(-) diff --cc CHANGES.txt index 24da866a5f,9808945582..fbbc57216b --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,24 -1,5 +1,25 @@@ -5.0-beta2 +5.1 + * Refactor cqlshmain global constants (CASSANDRA-19201) + * Remove native_transport_port_ssl (CASSANDRA-19397) + * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) + * Expose auth mode in system_views.clients, nodetool clientstats, metrics (CASSANDRA-19366) + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189) + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271) + * Refactor structure of caching metrics and expose auth cache metrics via JMX (CASSANDRA-17062) + * Allow CQL client certificate authentication to work without sending an AUTHENTICATE request (CASSANDRA-18857) + * Extend nodetool tpstats and system_views.thread_pools with detailed pool parameters (CASSANDRA-19289) + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565) + * Simplify the bind marker and Term logic (CASSANDRA-18813) + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688) + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104) + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015) + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875) + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330) + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Avoid consistency violations for SAI intersections over unrepaired data at consistency levels requiring reconciliation (CASSANDRA-19018) * Fix NullPointerException in ANN+WHERE when adding rows in another partition (CASSANDRA-19404) * Record latencies for SAI post-filtering reads against
(cassandra) branch trunk updated (cd347bdc58 -> 58f0e2146b)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from cd347bdc58 Merge branch 'cassandra-5.0' into trunk new f7984627e7 Avoid possible consistency violations for SAI intersection queries over partially updated rows at consistency levels that require reconciliation new 58f0e2146b Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../cql3/restrictions/StatementRestrictions.java | 6 +- .../cassandra/cql3/statements/SelectStatement.java | 9 +- .../cassandra/db/AbstractReadCommandBuilder.java | 2 +- .../org/apache/cassandra/db/ConsistencyLevel.java | 15 +- src/java/org/apache/cassandra/db/ReadCommand.java | 34 +- .../db/compaction/CompactionIterator.java | 29 +- .../org/apache/cassandra/db/filter/RowFilter.java | 243 +- .../cassandra/db/rows/UnfilteredRowIterators.java | 33 +- .../apache/cassandra/index/sai/QueryContext.java | 14 +- .../cassandra/index/sai/StorageAttachedIndex.java | 17 +- .../index/sai/disk/IndexSearchResultIterator.java | 14 +- .../index/sai/disk/PerColumnIndexWriter.java | 4 +- .../cassandra/index/sai/disk/RowMapping.java | 39 +- .../index/sai/disk/v1/MemtableIndexWriter.java | 38 +- .../index/sai/iterators/KeyRangeIterator.java | 2 +- .../index/sai/iterators/KeyRangeUnionIterator.java | 38 +- .../cassandra/index/sai/plan/FilterTree.java | 58 ++- .../apache/cassandra/index/sai/plan/Operation.java | 32 +- .../cassandra/index/sai/plan/QueryController.java | 95 +++- .../cassandra/index/sai/plan/QueryViewBuilder.java | 78 +--- .../sai/plan/StorageAttachedIndexQueryPlan.java| 30 +- .../sai/plan/StorageAttachedIndexSearcher.java | 68 +-- .../cassandra/service/reads/DataResolver.java | 55 ++- .../service/reads/ReplicaFilteringProtection.java | 86 ++-- .../reads/repair/RowIteratorMergeListener.java | 10 +- .../test/ReplicaFilteringProtectionTest.java | 78 ++-- .../test/sai/ConcurrencyFactorTest.java| 9 +- .../test/sai/PartialUpdateHandlingTest.java| 494 + .../test/sai/ReplicaFilteringProtectionTest.java | 67 --- .../distributed/test/sai/StrictFilteringTest.java | 227 ++ test/unit/org/apache/cassandra/db/CleanupTest.java | 2 +- .../org/apache/cassandra/db/ReadCommandTest.java | 6 +- .../db/ReadCommandVerbHandlerOutOfRangeTest.java | 4 +- .../cql/intersection/RandomIntersectionTester.java | 6 +- .../cassandra/index/sai/plan/OperationTest.java| 86 ++-- .../apache/cassandra/index/sasi/SASIIndexTest.java | 4 +- 37 files changed, 1408 insertions(+), 625 deletions(-) create mode 100644 test/distributed/org/apache/cassandra/distributed/test/sai/PartialUpdateHandlingTest.java delete mode 100644 test/distributed/org/apache/cassandra/distributed/test/sai/ReplicaFilteringProtectionTest.java create mode 100644 test/distributed/org/apache/cassandra/distributed/test/sai/StrictFilteringTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (81e253b166 -> ce963bc991)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 81e253b166 Merge branch 'cassandra-5.0' into trunk new 1d7bae3697 Record latencies for SAI post-filtering reads against local storage new ce963bc991 Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../index/sai/metrics/TableQueryMetrics.java | 4 +++ .../cassandra/index/sai/plan/QueryController.java | 14 + .../sai/plan/StorageAttachedIndexSearcher.java | 33 +- .../index/sai/metrics/QueryMetricsTest.java| 6 +++- .../cassandra/index/sai/plan/OperationTest.java| 9 ++ 6 files changed, 33 insertions(+), 34 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated: Record latencies for SAI post-filtering reads against local storage
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new 1d7bae3697 Record latencies for SAI post-filtering reads against local storage 1d7bae3697 is described below commit 1d7bae3697b97e64de2c2b958427ef86a1b17731 Author: Caleb Rackliffe AuthorDate: Thu Feb 22 15:08:23 2024 -0600 Record latencies for SAI post-filtering reads against local storage patch by Caleb Rackliffe; reviewed by Mike Adamson for CASSANDRA-18940 --- CHANGES.txt| 1 + .../index/sai/metrics/TableQueryMetrics.java | 4 +++ .../cassandra/index/sai/plan/QueryController.java | 14 + .../sai/plan/StorageAttachedIndexSearcher.java | 33 +- .../index/sai/metrics/QueryMetricsTest.java| 6 +++- .../cassandra/index/sai/plan/OperationTest.java| 9 ++ 6 files changed, 33 insertions(+), 34 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 20e0c6e959..4f35041497 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Record latencies for SAI post-filtering reads against local storage (CASSANDRA-18940) * Fix VectorMemoryIndex#update logic to compare vectors. Fix Index view (CASSANDRA-19168) * Deprecate native_transport_port_ssl (CASSANDRA-19392) * Update packaging shell includes (CASSANDRA-19283) diff --git a/src/java/org/apache/cassandra/index/sai/metrics/TableQueryMetrics.java b/src/java/org/apache/cassandra/index/sai/metrics/TableQueryMetrics.java index 7154df241d..987c70ef75 100644 --- a/src/java/org/apache/cassandra/index/sai/metrics/TableQueryMetrics.java +++ b/src/java/org/apache/cassandra/index/sai/metrics/TableQueryMetrics.java @@ -32,6 +32,8 @@ public class TableQueryMetrics extends AbstractMetrics { public static final String TABLE_QUERY_METRIC_TYPE = "TableQueryMetrics"; +public final Timer postFilteringReadLatency; + private final PerQueryMetrics perQueryMetrics; private final Counter totalQueryTimeouts; @@ -45,6 +47,8 @@ public class TableQueryMetrics extends AbstractMetrics perQueryMetrics = new PerQueryMetrics(table); +postFilteringReadLatency = Metrics.timer(createMetricName("PostFilteringReadLatency")); + totalPartitionReads = Metrics.counter(createMetricName("TotalPartitionReads")); totalRowsFiltered = Metrics.counter(createMetricName("TotalRowsFiltered")); totalQueriesCompleted = Metrics.counter(createMetricName("TotalQueriesCompleted")); diff --git a/src/java/org/apache/cassandra/index/sai/plan/QueryController.java b/src/java/org/apache/cassandra/index/sai/plan/QueryController.java index 597e339aaa..d844304812 100644 --- a/src/java/org/apache/cassandra/index/sai/plan/QueryController.java +++ b/src/java/org/apache/cassandra/index/sai/plan/QueryController.java @@ -57,7 +57,6 @@ import org.apache.cassandra.index.sai.iterators.KeyRangeIntersectionIterator; import org.apache.cassandra.index.sai.iterators.KeyRangeIterator; import org.apache.cassandra.index.sai.iterators.KeyRangeOrderingIterator; import org.apache.cassandra.index.sai.iterators.KeyRangeUnionIterator; -import org.apache.cassandra.index.sai.metrics.TableQueryMetrics; import org.apache.cassandra.index.sai.utils.PrimaryKey; import org.apache.cassandra.net.ParamType; import org.apache.cassandra.schema.TableMetadata; @@ -73,7 +72,6 @@ public class QueryController private final ColumnFamilyStore cfs; private final ReadCommand command; private final QueryContext queryContext; -private final TableQueryMetrics tableQueryMetrics; private final RowFilter filterOperation; private final List ranges; private final AbstractBounds mergeRange; @@ -85,13 +83,11 @@ public class QueryController public QueryController(ColumnFamilyStore cfs, ReadCommand command, RowFilter filterOperation, - QueryContext queryContext, - TableQueryMetrics tableQueryMetrics) + QueryContext queryContext) { this.cfs = cfs; this.command = command; this.queryContext = queryContext; -this.tableQueryMetrics = tableQueryMetrics; this.filterOperation = filterOperation; this.ranges = dataRanges(command); DataRange first = ranges.get(0); @@ -249,14 +245,6 @@ public class QueryController return key.kind() == PrimaryKey.Kind.WIDE && !command.clusteringIndexFilter(key.partitionKey()).selects(key.clustering()); } -/** - * Used to release all resources and record metrics when query finishes. - */ -public void finish() -{ -if (tableQ
(cassandra) 01/01: Merge branch 'cassandra-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit ce963bc991506190b1092b8190e9c42a9bfb6621 Merge: 81e253b166 1d7bae3697 Author: Caleb Rackliffe AuthorDate: Mon Feb 26 15:28:25 2024 -0600 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Record latencies for SAI post-filtering reads against local storage CHANGES.txt| 1 + .../index/sai/metrics/TableQueryMetrics.java | 4 +++ .../cassandra/index/sai/plan/QueryController.java | 14 + .../sai/plan/StorageAttachedIndexSearcher.java | 33 +- .../index/sai/metrics/QueryMetricsTest.java| 6 +++- .../cassandra/index/sai/plan/OperationTest.java| 9 ++ 6 files changed, 33 insertions(+), 34 deletions(-) diff --cc CHANGES.txt index eecbc9e50e,4f35041497..f9f28ba23d --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,24 -1,5 +1,25 @@@ -5.0-beta2 +5.1 + * Refactor cqlshmain global constants (CASSANDRA-19201) + * Remove native_transport_port_ssl (CASSANDRA-19397) + * Make nodetool reconfigurecms sync by default and add --cancel to be able to cancel ongoing reconfigurations (CASSANDRA-19216) + * Expose auth mode in system_views.clients, nodetool clientstats, metrics (CASSANDRA-19366) + * Remove sealed_periods and last_sealed_period tables (CASSANDRA-19189) + * Improve setup and initialisation of LocalLog/LogSpec (CASSANDRA-19271) + * Refactor structure of caching metrics and expose auth cache metrics via JMX (CASSANDRA-17062) + * Allow CQL client certificate authentication to work without sending an AUTHENTICATE request (CASSANDRA-18857) + * Extend nodetool tpstats and system_views.thread_pools with detailed pool parameters (CASSANDRA-19289) + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565) + * Simplify the bind marker and Term logic (CASSANDRA-18813) + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688) + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104) + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015) + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875) + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330) + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Record latencies for SAI post-filtering reads against local storage (CASSANDRA-18940) * Fix VectorMemoryIndex#update logic to compare vectors. Fix Index view (CASSANDRA-19168) * Deprecate native_transport_port_ssl (CASSANDRA-19392) * Update packaging shell includes (CASSANDRA-19283) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (37acd27f2d -> d6c7c87f55)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 37acd27f2d Extend nodetool tpstats and system_views.thread_pools with detailed pool parameters new 87f2a7b763 Avoid over-skipping of key iterators from static column indexes during mixed intersections new d6c7c87f55 Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../cassandra/index/sai/disk/RowMapping.java | 49 ++-- .../index/sai/disk/v1/MemtableIndexWriter.java | 31 +-- .../iterators/KeyRangeIntersectionIterator.java| 114 ++--- .../index/sai/iterators/KeyRangeIterator.java | 8 +- .../cassandra/index/sai/utils/PrimaryKey.java | 53 +++- .../index/sai/cql/RandomIntersectionTest.java | 227 - .../index/sai/cql/StaticColumnIndexTest.java | 21 +- .../cql/intersection/RandomIntersectionTester.java | 270 + .../intersection/RandomMixedIntersectionTest.java | 53 .../RandomMixedPartitionIntersectionTest.java | 53 .../RandomRegularIntersectionTest.java | 53 .../RandomRegularPartitionIntersectionTest.java| 53 .../intersection/RandomStaticIntersectionTest.java | 53 .../RandomStaticPartitionIntersectionTest.java | 53 .../TwoRegularOneStaticIntersectionTest.java | 53 ...oRegularOneStaticPartitionIntersectionTest.java | 53 .../cassandra/index/sai/utils/PrimaryKeyTest.java | 3 +- 18 files changed, 897 insertions(+), 304 deletions(-) delete mode 100644 test/unit/org/apache/cassandra/index/sai/cql/RandomIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/RandomIntersectionTester.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/RandomMixedIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/RandomMixedPartitionIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/RandomRegularIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/RandomRegularPartitionIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/RandomStaticIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/RandomStaticPartitionIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/TwoRegularOneStaticIntersectionTest.java create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/intersection/TwoRegularOneStaticPartitionIntersectionTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated: Avoid over-skipping of key iterators from static column indexes during mixed intersections
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new 87f2a7b763 Avoid over-skipping of key iterators from static column indexes during mixed intersections 87f2a7b763 is described below commit 87f2a7b7637a346cdeea23e0b74d9968ccfca619 Author: Caleb Rackliffe AuthorDate: Fri Jan 19 04:39:02 2024 -0600 Avoid over-skipping of key iterators from static column indexes during mixed intersections patch by Caleb Rackliffe; reviewed by Piotr Kołaczkowski and Alex Petrov for CASSANDRA-19278 Co-authored-by: Caleb Rackliffe Co-authored-by: Piotr Kołaczkowski --- CHANGES.txt| 1 + .../cassandra/index/sai/disk/RowMapping.java | 49 ++-- .../index/sai/disk/v1/MemtableIndexWriter.java | 31 +-- .../iterators/KeyRangeIntersectionIterator.java| 114 ++--- .../index/sai/iterators/KeyRangeIterator.java | 8 +- .../cassandra/index/sai/utils/PrimaryKey.java | 53 +++- .../index/sai/cql/RandomIntersectionTest.java | 227 - .../index/sai/cql/StaticColumnIndexTest.java | 21 +- .../cql/intersection/RandomIntersectionTester.java | 270 + .../intersection/RandomMixedIntersectionTest.java | 53 .../RandomMixedPartitionIntersectionTest.java | 53 .../RandomRegularIntersectionTest.java | 53 .../RandomRegularPartitionIntersectionTest.java| 53 .../intersection/RandomStaticIntersectionTest.java | 53 .../RandomStaticPartitionIntersectionTest.java | 53 .../TwoRegularOneStaticIntersectionTest.java | 53 ...oRegularOneStaticPartitionIntersectionTest.java | 53 .../cassandra/index/sai/utils/PrimaryKeyTest.java | 3 +- 18 files changed, 897 insertions(+), 304 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 73b0ecdea9..90cb544d10 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta2 + * Avoid over-skipping of key iterators from static column indexes during mixed intersections (CASSANDRA-19278) * Make concurrent_index_builders configurable at runtime (CASSANDRA-19266) * Fix storage_compatibility_mode for streaming (CASSANDRA-19126) * Add support of vector type to cqlsh COPY command (CASSANDRA-19118) diff --git a/src/java/org/apache/cassandra/index/sai/disk/RowMapping.java b/src/java/org/apache/cassandra/index/sai/disk/RowMapping.java index ec122ae006..43bb79b91b 100644 --- a/src/java/org/apache/cassandra/index/sai/disk/RowMapping.java +++ b/src/java/org/apache/cassandra/index/sai/disk/RowMapping.java @@ -70,12 +70,6 @@ public class RowMapping { return -1; } - -@Override -public int size() -{ -return 0; -} }; private final InMemoryTrie rowMapping = new InMemoryTrie<>(BufferType.OFF_HEAP); @@ -84,10 +78,14 @@ public class RowMapping public PrimaryKey minKey; public PrimaryKey maxKey; +public PrimaryKey minStaticKey; +public PrimaryKey maxStaticKey; public long maxSSTableRowId = -1; +public long maxStaticSSTableRowId = -1; -public int count; +public int rowCount; +public int staticRowCount; private RowMapping() {} @@ -171,20 +169,32 @@ public class RowMapping rowMapping.putSingleton(key, sstableRowId, OVERWRITE_TRANSFORMER); -maxSSTableRowId = Math.max(maxSSTableRowId, sstableRowId); - -// data is written in token sorted order -if (minKey == null) -minKey = key; -maxKey = key; -count++; +// Data is written in primary key order. If a schema contains clustering keys, it may also contain static +// columns. We track min, max, and count for static keys separately here so that we can pass them to the segment +// metadata for indexes on static columns. +if (key.kind() == PrimaryKey.Kind.STATIC) +{ +if (minStaticKey == null) +minStaticKey = key; +maxStaticKey = key; +staticRowCount++; +maxStaticSSTableRowId = Math.max(maxStaticSSTableRowId, sstableRowId); +} +else +{ +if (minKey == null) +minKey = key; +maxKey = key; +rowCount++; +maxSSTableRowId = Math.max(maxSSTableRowId, sstableRowId); +} } /** - * Returns the SSTable row Id for a {@link PrimaryKey} + * Returns the SSTable row ID for a {@link PrimaryKey} * * @param key the {@link PrimaryKey} - * @return a valid SSTable row Id for the {@link PrimaryKey} or -1 if the {@link PrimaryKey} doesn't exist + * @return a valid SSTable row ID for the {@link PrimaryKey}
(cassandra) 01/01: Merge branch 'cassandra-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit d6c7c87f553a66b8fc270b273886e5fdf3a34f41 Merge: 37acd27f2d 87f2a7b763 Author: Caleb Rackliffe AuthorDate: Mon Jan 29 09:50:57 2024 -0600 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Avoid over-skipping of key iterators from static column indexes during mixed intersections CHANGES.txt| 1 + .../cassandra/index/sai/disk/RowMapping.java | 49 ++-- .../index/sai/disk/v1/MemtableIndexWriter.java | 31 +-- .../iterators/KeyRangeIntersectionIterator.java| 114 ++--- .../index/sai/iterators/KeyRangeIterator.java | 8 +- .../cassandra/index/sai/utils/PrimaryKey.java | 53 +++- .../index/sai/cql/RandomIntersectionTest.java | 227 - .../index/sai/cql/StaticColumnIndexTest.java | 21 +- .../cql/intersection/RandomIntersectionTester.java | 270 + .../intersection/RandomMixedIntersectionTest.java | 53 .../RandomMixedPartitionIntersectionTest.java | 53 .../RandomRegularIntersectionTest.java | 53 .../RandomRegularPartitionIntersectionTest.java| 53 .../intersection/RandomStaticIntersectionTest.java | 53 .../RandomStaticPartitionIntersectionTest.java | 53 .../TwoRegularOneStaticIntersectionTest.java | 53 ...oRegularOneStaticPartitionIntersectionTest.java | 53 .../cassandra/index/sai/utils/PrimaryKeyTest.java | 3 +- 18 files changed, 897 insertions(+), 304 deletions(-) diff --cc CHANGES.txt index 1c272c5110,90cb544d10..747936c149 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,15 -1,5 +1,16 @@@ -5.0-beta2 +5.1 + * Remove dependency on Sigar in favor of OSHI (CASSANDRA-16565) + * Simplify the bind marker and Term logic (CASSANDRA-18813) + * Limit cassandra startup to supported JDKs, allow higher JDKs by setting CASSANDRA_JDK_UNSUPPORTED (CASSANDRA-18688) + * Standardize nodetool tablestats formatting of data units (CASSANDRA-19104) + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015) + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875) + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330) + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Avoid over-skipping of key iterators from static column indexes during mixed intersections (CASSANDRA-19278) * Make concurrent_index_builders configurable at runtime (CASSANDRA-19266) * Fix storage_compatibility_mode for streaming (CASSANDRA-19126) * Add support of vector type to cqlsh COPY command (CASSANDRA-19118) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch CASSANDRA-18714-5.0-maedhroz-client deleted (was fecac728ec)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch CASSANDRA-18714-5.0-maedhroz-client in repository https://gitbox.apache.org/repos/asf/cassandra.git was fecac728ec Alternative fix for SAI + CQLSSTableWriter in client mode This change permanently discards the following revisions: discard fecac728ec Alternative fix for SAI + CQLSSTableWriter in client mode - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch CASSANDRA-18714-5.0-maedhroz-client created (now fecac728ec)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch CASSANDRA-18714-5.0-maedhroz-client in repository https://gitbox.apache.org/repos/asf/cassandra.git at fecac728ec Alternative fix for SAI + CQLSSTableWriter in client mode This branch includes the following new commits: new fecac728ec Alternative fix for SAI + CQLSSTableWriter in client mode The 1 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. - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) 01/01: Alternative fix for SAI + CQLSSTableWriter in client mode
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch CASSANDRA-18714-5.0-maedhroz-client in repository https://gitbox.apache.org/repos/asf/cassandra.git commit fecac728ec945e9b376a5fb2c4af54f337d744cf Author: Caleb Rackliffe AuthorDate: Fri Jan 12 14:52:43 2024 -0600 Alternative fix for SAI + CQLSSTableWriter in client mode --- src/java/org/apache/cassandra/config/Config.java | 18 +- .../statements/schema/CreateIndexStatement.java| 10 +-- .../org/apache/cassandra/db/ColumnFamilyStore.java | 44 + .../db/memtable/AbstractAllocatorMemtable.java | 22 +-- .../apache/cassandra/db/memtable/TrieMemtable.java | 19 +- .../cassandra/index/SecondaryIndexManager.java | 2 +- .../index/sai/StorageAttachedIndexGroup.java | 2 +- .../sai/disk/v1/segment/SegmentTrieBuffer.java | 4 +- .../cassandra/io/sstable/CQLSSTableWriter.java | 72 -- .../locator/AbstractReplicationStrategy.java | 2 +- 10 files changed, 59 insertions(+), 136 deletions(-) diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index df1cf62d15..d5b91ef530 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -39,6 +39,7 @@ import org.apache.cassandra.audit.AuditLogOptions; import org.apache.cassandra.db.ConsistencyLevel; import org.apache.cassandra.fql.FullQueryLoggerOptions; import org.apache.cassandra.index.internal.CassandraIndex; +import org.apache.cassandra.io.compress.BufferType; import org.apache.cassandra.io.sstable.format.big.BigFormat; import org.apache.cassandra.service.StartupChecks.StartupCheckType; import org.apache.cassandra.utils.StorageCompatibilityMode; @@ -1164,7 +1165,22 @@ public class Config unslabbed_heap_buffers_logged, heap_buffers, offheap_buffers, -offheap_objects +offheap_objects; + +public BufferType toBufferType() +{ +switch (this) +{ +case unslabbed_heap_buffers: +case heap_buffers: +return BufferType.ON_HEAP; +case offheap_buffers: +case offheap_objects: +return BufferType.OFF_HEAP; +default: +throw new AssertionError(); +} +} } public enum DiskFailurePolicy diff --git a/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java b/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java index 2c475f45f5..b53e066f90 100644 --- a/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/schema/CreateIndexStatement.java @@ -80,11 +80,11 @@ public final class CreateIndexStatement extends AlterSchemaStatement public static final String KEYSPACE_DOES_NOT_MATCH_INDEX = "Keyspace name '%s' doesn't match index name '%s'"; public static final String MUST_SPECIFY_INDEX_IMPLEMENTATION = "Must specify index implementation via USING"; -public final String indexName; -public final String tableName; -public final List rawIndexTargets; -public final IndexAttributes attrs; -public final boolean ifNotExists; +private final String indexName; +private final String tableName; +private final List rawIndexTargets; +private final IndexAttributes attrs; +private final boolean ifNotExists; private ClientState state; diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 023aac5f27..bcf4dc7073 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -200,36 +200,24 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean, Memtable.Owner are finished. By having flushExecutor size the same size as each of the perDiskflushExecutors we make sure we can have that many flushes going at the same time. */ -private static ExecutorPlus flushExecutor; +private static final ExecutorPlus flushExecutor = DatabaseDescriptor.isDaemonInitialized() + ? executorFactory().withJmxInternal().pooled("MemtableFlushWriter", getFlushWriters()) + : null; // post-flush executor is single threaded to provide guarantee that any flush Future on a CF will never return until prior flushes have completed -private static ExecutorPlus postFlushExecutor; +private static final ExecutorPlus postFlushExecutor = DatabaseDescriptor.isDaemonInitialized() + ? executorFactory(
(cassandra) 01/01: Merge branch 'cassandra-4.1' into cassandra-5.0
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 14c773d8bcc3c7e1e9fe69ba7178c0914a532b91 Merge: ad642d5e25 4dd69dc62d Author: Caleb Rackliffe AuthorDate: Tue Jan 9 14:59:32 2024 -0600 Merge branch 'cassandra-4.1' into cassandra-5.0 * cassandra-4.1: Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 CHANGES.txt | 1 + src/java/org/apache/cassandra/locator/TokenMetadata.java| 13 ++--- .../org/apache/cassandra/locator/TokenMetadataTest.java | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) diff --cc CHANGES.txt index fa6b00a1d7,66144ce1e6..0e2306dc68 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,41 -1,14 +1,42 @@@ -4.1.4 +5.0-beta2 + * Creating a SASI index after creating an SAI index does not break secondary index queries (CASSANDRA-18939) + * Optionally fail when a non-partition-restricted query is issued against an index (CASSANDRA-18796) + * Add a startup check to fail startup when using invalid configuration with certain Kernel and FS type (CASSANDRA-19196) + * UCS min_sstable_size should not be lower than target_sstable_size lower bound (CASSANDRA-19112) + * Fix the correspondingMessagingVersion of SSTable format and improve TTL overflow tests coverage (CASSANDRA-19197) + * Fix resource cleanup after SAI query timeouts (CASSANDRA-19177) + * Suppress CVE-2023-6481 (CASSANDRA-19184) +Merged from 4.1: * Memoize Cassandra verion and add a backoff interval for failed schema pulls (CASSANDRA-18902) * Fix StackOverflowError on ALTER after many previous schema changes (CASSANDRA-19166) - * Fixed the inconsistency between distributedKeyspaces and distributedAndLocalKeyspaces (CASSANDRA-18747) - * Internode legacy SSL storage port certificate is not hot reloaded on update (CASSANDRA-18681) - * Nodetool paxos-only repair is no longer incremental (CASSANDRA-18466) - * Waiting indefinitely on ReceivedMessage response in StreamSession#receive() can cause deadlock (CASSANDRA-18733) - * Allow empty keystore_password in encryption_options (CASSANDRA-18778) - * Skip ColumnFamilyStore#topPartitions initialization when client or tool mode (CASSANDRA-18697) Merged from 4.0: + * Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 (CASSANDRA-19107) +Merged from 3.11: +Merged from 3.0: + + +5.0-beta1 + * Fix SAI intersection queries (CASSANDRA-19011) + * Clone EndpointState before sending GossipShutdown message (CASSANDRA-19115) + * SAI indexes are marked queryable during truncation (CASSANDRA-19032) + * Enable Direct-IO feature for CommitLog files using Java native API's. (CASSANDRA-18464) + * SAI fixes for composite partitions, and static and non-static rows intersections (CASSANDRA-19034) + * Improve SAI IndexContext handling of indexed and non-indexed columns in queries (CASSANDRA-18166) + * Fixed bug where UnifiedCompactionTask constructor was calling the wrong base constructor of CompactionTask (CASSANDRA-18757) + * Fix SAI unindexed contexts not considering CONTAINS KEY (CASSANDRA-19040) + * Ensure that empty SAI column indexes do not fail on validation after full-SSTable streaming (CASSANDRA-19017) + * SAI in-memory index should check max term size (CASSANDRA-18926) + * Set default disk_access_mode to mmap_index_only (CASSANDRA-19021) + * Exclude net.java.dev.jna:jna dependency from dependencies of org.caffinitas.ohc:ohc-core (CASSANDRA-18992) + * Add UCS sstable_growth and min_sstable_size options (CASSANDRA-18945) + * Make cqlsh's min required Python version 3.7+ instead of 3.6+ (CASSANDRA-18960) + * Fix incorrect seeking through the sstable iterator by IndexState (CASSANDRA-18932) + * Upgrade Python driver to 3.28.0 (CASSANDRA-18960) + * Add retries to IR messages (CASSANDRA-18962) + * Add metrics and logging to repair retries (CASSANDRA-18952) + * Remove deprecated code in Cassandra 1.x and 2.x (CASSANDRA-18959) + * ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based (CASSANDRA-18896) +Merged from 4.0: * Support max SSTable size in sorted CQLSSTableWriter (CASSANDRA-18941) * Fix nodetool repair_admin summarize-pending command to not throw exception (CASSANDRA-19014) * Fix cassandra-stress in simplenative mode with prepared statements (CASSANDRA-18744) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated (ad642d5e25 -> 14c773d8bc)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git from ad642d5e25 Creating a SASI index after creating an SAI index does not break secondary index queries new d5cea135c9 Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 new 4dd69dc62d Merge branch 'cassandra-4.0' into cassandra-4.1 new 14c773d8bc Merge branch 'cassandra-4.1' into cassandra-5.0 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/locator/TokenMetadata.java| 13 ++--- .../org/apache/cassandra/locator/TokenMetadataTest.java | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (9db908917a -> 2e7c0ee5c6)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 9db908917a Standardize nodetool tablestats formatting of data units new d5cea135c9 Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 new 4dd69dc62d Merge branch 'cassandra-4.0' into cassandra-4.1 new 14c773d8bc Merge branch 'cassandra-4.1' into cassandra-5.0 new 2e7c0ee5c6 Merge branch 'cassandra-5.0' 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) branch cassandra-4.0 updated: Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-4.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-4.0 by this push: new d5cea135c9 Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 d5cea135c9 is described below commit d5cea135c98bb98b16b215d309ead22e86f1329f Author: Caleb Rackliffe AuthorDate: Mon Jan 8 15:23:35 2024 -0600 Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 patch by Caleb Rackliffe; reviewed by Francisco Guerrero for CASSANDRA-19107 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/locator/TokenMetadata.java| 13 ++--- .../org/apache/cassandra/locator/TokenMetadataTest.java | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 771cf1f3c0..0edb216735 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.0.12 + * Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 (CASSANDRA-19107) * Support max SSTable size in sorted CQLSSTableWriter (CASSANDRA-18941) * Fix nodetool repair_admin summarize-pending command to not throw exception (CASSANDRA-19014) * Fix cassandra-stress in simplenative mode with prepared statements (CASSANDRA-18744) diff --git a/src/java/org/apache/cassandra/locator/TokenMetadata.java b/src/java/org/apache/cassandra/locator/TokenMetadata.java index 92551ac1bf..39f43289da 100644 --- a/src/java/org/apache/cassandra/locator/TokenMetadata.java +++ b/src/java/org/apache/cassandra/locator/TokenMetadata.java @@ -111,7 +111,7 @@ public class TokenMetadata // signals replication strategies that nodes have joined or left the ring and they need to recompute ownership @GuardedBy("lock") -private long ringVersion = 0; +private volatile long ringVersion = 0; public TokenMetadata() { @@ -1372,16 +1372,7 @@ public class TokenMetadata public long getRingVersion() { -lock.readLock().lock(); - -try -{ -return ringVersion; -} -finally -{ -lock.readLock().unlock(); -} +return ringVersion; } public void invalidateCachedRings() diff --git a/test/unit/org/apache/cassandra/locator/TokenMetadataTest.java b/test/unit/org/apache/cassandra/locator/TokenMetadataTest.java index 9e34b93bf1..429069a1dc 100644 --- a/test/unit/org/apache/cassandra/locator/TokenMetadataTest.java +++ b/test/unit/org/apache/cassandra/locator/TokenMetadataTest.java @@ -79,7 +79,7 @@ public class TokenMetadataTest ExecutorService pool = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() + 1); -int invalidations = 1024; +int invalidations = 2048; for (int i = 0; i < invalidations; i++) pool.execute(() -> tmd.invalidateCachedRings()); - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-4.1 updated (3edca0041c -> 4dd69dc62d)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git from 3edca0041c Memoize Cassandra verion and add a backoff interval for failed schema pulls new d5cea135c9 Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 new 4dd69dc62d Merge branch 'cassandra-4.0' into cassandra-4.1 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/locator/TokenMetadata.java| 13 ++--- .../org/apache/cassandra/locator/TokenMetadataTest.java | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 2e7c0ee5c688e174ea0e7255260e44dc0c00f6b2 Merge: 9db908917a 14c773d8bc Author: Caleb Rackliffe AuthorDate: Tue Jan 9 15:07:06 2024 -0600 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 - 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-4.0' into cassandra-4.1
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-4.1 in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 4dd69dc62db58a82391102ba7278786508078f09 Merge: 3edca0041c d5cea135c9 Author: Caleb Rackliffe AuthorDate: Tue Jan 9 14:50:31 2024 -0600 Merge branch 'cassandra-4.0' into cassandra-4.1 * cassandra-4.0: Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 CHANGES.txt | 1 + src/java/org/apache/cassandra/locator/TokenMetadata.java| 13 ++--- .../org/apache/cassandra/locator/TokenMetadataTest.java | 2 +- 3 files changed, 4 insertions(+), 12 deletions(-) diff --cc CHANGES.txt index b1518e8320,0edb216735..66144ce1e6 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,13 -1,5 +1,14 @@@ -4.0.12 +4.1.4 + * Memoize Cassandra verion and add a backoff interval for failed schema pulls (CASSANDRA-18902) + * Fix StackOverflowError on ALTER after many previous schema changes (CASSANDRA-19166) + * Fixed the inconsistency between distributedKeyspaces and distributedAndLocalKeyspaces (CASSANDRA-18747) + * Internode legacy SSL storage port certificate is not hot reloaded on update (CASSANDRA-18681) + * Nodetool paxos-only repair is no longer incremental (CASSANDRA-18466) + * Waiting indefinitely on ReceivedMessage response in StreamSession#receive() can cause deadlock (CASSANDRA-18733) + * Allow empty keystore_password in encryption_options (CASSANDRA-18778) + * Skip ColumnFamilyStore#topPartitions initialization when client or tool mode (CASSANDRA-18697) +Merged from 4.0: + * Revert unnecessary read lock acquisition when reading ring version in TokenMetadata introduced in CASSANDRA-16286 (CASSANDRA-19107) * Support max SSTable size in sorted CQLSSTableWriter (CASSANDRA-18941) * Fix nodetool repair_admin summarize-pending command to not throw exception (CASSANDRA-19014) * Fix cassandra-stress in simplenative mode with prepared statements (CASSANDRA-18744) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch trunk updated (d6159cfe15 -> 4cabe486e1)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from d6159cfe15 Merge branch 'cassandra-5.0' into trunk new 256e39fc62 ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based new 4cabe486e1 Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../cql3/restrictions/SingleRestriction.java | 2 +- .../ClientRequestRowAndColumnMetricsTest.java | 57 +++--- 3 files changed, 30 insertions(+), 30 deletions(-) - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 4cabe486e193aa5b9ce26239b3bc01d5b520b25d Merge: d6159cfe15 256e39fc62 Author: Caleb Rackliffe AuthorDate: Mon Oct 30 14:28:19 2023 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based CHANGES.txt| 1 + .../cql3/restrictions/SingleRestriction.java | 2 +- .../ClientRequestRowAndColumnMetricsTest.java | 57 +++--- 3 files changed, 30 insertions(+), 30 deletions(-) diff --cc CHANGES.txt index 5e3057f3eb,e87484c643..f7708acdd8 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,8 -1,5 +1,9 @@@ -5.0-alpha2 +5.1 + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based (CASSANDRA-18896) * Add support for vector search in SAI (CASSANDRA-18715) * Remove crc_check_chance from CompressionParams (CASSANDRA-18872) * Fix schema loading of UDTs inside vectors inside UDTs (CASSANDRA-18964) diff --cc test/unit/org/apache/cassandra/metrics/ClientRequestRowAndColumnMetricsTest.java index cb4b38897f,c0f659361e..80a3d3e0ce --- a/test/unit/org/apache/cassandra/metrics/ClientRequestRowAndColumnMetricsTest.java +++ b/test/unit/org/apache/cassandra/metrics/ClientRequestRowAndColumnMetricsTest.java @@@ -619,7 -619,7 +619,6 @@@ public class ClientRequestRowAndColumnM executeNet(CURRENT, "SELECT * FROM %s WHERE v CONTAINS 1 ALLOW FILTERING"); assertEquals(1, ClientRequestSizeMetrics.totalRowsRead.getCount()); --// The filtering term is provided by the client in the request, so we don't consider that column read. - assertEquals(2, ClientRequestSizeMetrics.totalColumnsRead.getCount()); + assertEquals(3, ClientRequestSizeMetrics.totalColumnsRead.getCount()); } } - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
(cassandra) branch cassandra-5.0 updated: ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new 256e39fc62 ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based 256e39fc62 is described below commit 256e39fc62c0b0ce576fd29849672e6323eecea4 Author: Caleb Rackliffe AuthorDate: Thu Oct 19 16:35:57 2023 -0500 ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based patch by Caleb Rackliffe; reviewed by Benjamin Lerer for CASSANDRA-18896 --- CHANGES.txt| 1 + .../cql3/restrictions/SingleRestriction.java | 2 +- .../ClientRequestRowAndColumnMetricsTest.java | 58 +++--- 3 files changed, 31 insertions(+), 30 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 46a8acf7a2..e87484c643 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-alpha2 + * ClientRequestSize metrics should not treat CONTAINS restrictions as being equality-based (CASSANDRA-18896) * Add support for vector search in SAI (CASSANDRA-18715) * Remove crc_check_chance from CompressionParams (CASSANDRA-18872) * Fix schema loading of UDTs inside vectors inside UDTs (CASSANDRA-18964) diff --git a/src/java/org/apache/cassandra/cql3/restrictions/SingleRestriction.java b/src/java/org/apache/cassandra/cql3/restrictions/SingleRestriction.java index 305de15ef0..8f4e2b5de4 100644 --- a/src/java/org/apache/cassandra/cql3/restrictions/SingleRestriction.java +++ b/src/java/org/apache/cassandra/cql3/restrictions/SingleRestriction.java @@ -61,7 +61,7 @@ public interface SingleRestriction extends Restriction */ default boolean isEqualityBased() { -return isEQ() || isIN() || isContains(); +return isEQ() || isIN(); } public default boolean isNotNull() diff --git a/test/unit/org/apache/cassandra/metrics/ClientRequestRowAndColumnMetricsTest.java b/test/unit/org/apache/cassandra/metrics/ClientRequestRowAndColumnMetricsTest.java index cb4b38897f..c0f659361e 100644 --- a/test/unit/org/apache/cassandra/metrics/ClientRequestRowAndColumnMetricsTest.java +++ b/test/unit/org/apache/cassandra/metrics/ClientRequestRowAndColumnMetricsTest.java @@ -62,7 +62,7 @@ public class ClientRequestRowAndColumnMetricsTest extends CQLTester } @Test -public void shouldRecordReadMetricsForMultiRowPartitionSelection() throws Throwable +public void shouldRecordReadMetricsForMultiRowPartitionSelection() { createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); @@ -76,7 +76,7 @@ public class ClientRequestRowAndColumnMetricsTest extends CQLTester } @Test -public void shouldRecordReadMetricsWithOnlyPartitionKeyInSelect() throws Throwable +public void shouldRecordReadMetricsWithOnlyPartitionKeyInSelect() { createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); @@ -90,7 +90,7 @@ public class ClientRequestRowAndColumnMetricsTest extends CQLTester } @Test -public void shouldRecordReadMetricsWithOnlyClusteringKeyInSelect() throws Throwable +public void shouldRecordReadMetricsWithOnlyClusteringKeyInSelect() { createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); @@ -104,7 +104,7 @@ public class ClientRequestRowAndColumnMetricsTest extends CQLTester } @Test -public void shouldNotRecordReadMetricsWhenDisabled() throws Throwable +public void shouldNotRecordReadMetricsWhenDisabled() { StorageProxy.instance.setClientRequestSizeMetricsEnabled(false); @@ -119,7 +119,7 @@ public class ClientRequestRowAndColumnMetricsTest extends CQLTester } @Test -public void shouldRecordReadMetricsWithSingleRowSelection() throws Throwable +public void shouldRecordReadMetricsWithSingleRowSelection() { createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); @@ -132,7 +132,7 @@ public class ClientRequestRowAndColumnMetricsTest extends CQLTester } @Test -public void shouldRecordReadMetricsWithSliceRestriction() throws Throwable +public void shouldRecordReadMetricsWithSliceRestriction() { createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); @@ -145,7 +145,7 @@ public class ClientRequestRowAndColumnMetricsTest extends CQLTester } @Test -public void shouldRecordReadMetricsWithINRestrictionSinglePartition() throws Throwable +public void shouldRecordReadMetricsWithINRestrictionSinglePartition() { createTable("CREATE TABLE %s (pk int, ck int, v int, PRIMARY KEY (pk, ck))"); @@ -158,7 +158,7 @@ public c
[cassandra] branch trunk updated (06202c9ff3 -> bf321d7951)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 06202c9ff3 Merge branch 'cassandra-5.0' into trunk new 07df26778b Change the checksum algorithm SAI-related files use from CRC32 to CRC32C new bf321d7951 Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../sai/disk/io/BufferedChecksumIndexInput.java| 86 ++ .../index/sai/disk/io/IndexFileUtils.java | 19 - .../index/sai/disk/v1/MetadataSource.java | 5 +- .../cassandra/index/sai/disk/v1/SAICodecUtils.java | 42 --- .../index/sai/disk/v1/SAICodecUtilsTest.java | 22 +++--- 6 files changed, 148 insertions(+), 27 deletions(-) create mode 100644 src/java/org/apache/cassandra/index/sai/disk/io/BufferedChecksumIndexInput.java - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit bf321d79511de0b7fc99ae652a6523042ec5e659 Merge: 06202c9ff3 07df26778b Author: Caleb Rackliffe AuthorDate: Fri Oct 20 14:47:26 2023 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Change the checksum algorithm SAI-related files use from CRC32 to CRC32C CHANGES.txt| 1 + .../sai/disk/io/BufferedChecksumIndexInput.java| 86 ++ .../index/sai/disk/io/IndexFileUtils.java | 19 - .../index/sai/disk/v1/MetadataSource.java | 5 +- .../cassandra/index/sai/disk/v1/SAICodecUtils.java | 42 --- .../index/sai/disk/v1/SAICodecUtilsTest.java | 22 +++--- 6 files changed, 148 insertions(+), 27 deletions(-) diff --cc CHANGES.txt index ed18ef6962,547a1bb11f..7b4ea53fc4 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,8 -1,5 +1,9 @@@ -5.0-alpha2 +5.1 + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Change the checksum algorithm SAI-related files use from CRC32 to CRC32C (CASSANDRA-18836) * Correctly remove Index.Group from IndexRegistry (CASSANDRA-18905) * Fix vector type to support DDM's mask_default function (CASSANDRA-18889) * Remove unnecessary reporter-config3 dependency (CASSANDRA-18907) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-5.0 updated: Change the checksum algorithm SAI-related files use from CRC32 to CRC32C
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new 07df26778b Change the checksum algorithm SAI-related files use from CRC32 to CRC32C 07df26778b is described below commit 07df26778b01a00c1f5770c8cf133ce4c2829533 Author: Maxim Muzafarov AuthorDate: Fri Oct 20 11:01:54 2023 +0200 Change the checksum algorithm SAI-related files use from CRC32 to CRC32C patch by Maxim Muzafarov; reviewed by Caleb Rackliffe and Zhao Yang for CASSANDRA-18836 --- CHANGES.txt| 1 + .../sai/disk/io/BufferedChecksumIndexInput.java| 86 ++ .../index/sai/disk/io/IndexFileUtils.java | 19 - .../index/sai/disk/v1/MetadataSource.java | 5 +- .../cassandra/index/sai/disk/v1/SAICodecUtils.java | 42 --- .../index/sai/disk/v1/SAICodecUtilsTest.java | 22 +++--- 6 files changed, 148 insertions(+), 27 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 89d1163f83..547a1bb11f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-alpha2 + * Change the checksum algorithm SAI-related files use from CRC32 to CRC32C (CASSANDRA-18836) * Correctly remove Index.Group from IndexRegistry (CASSANDRA-18905) * Fix vector type to support DDM's mask_default function (CASSANDRA-18889) * Remove unnecessary reporter-config3 dependency (CASSANDRA-18907) diff --git a/src/java/org/apache/cassandra/index/sai/disk/io/BufferedChecksumIndexInput.java b/src/java/org/apache/cassandra/index/sai/disk/io/BufferedChecksumIndexInput.java new file mode 100644 index 00..333868466a --- /dev/null +++ b/src/java/org/apache/cassandra/index/sai/disk/io/BufferedChecksumIndexInput.java @@ -0,0 +1,86 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sai.disk.io; + +import org.apache.lucene.store.ChecksumIndexInput; +import org.apache.lucene.store.IndexInput; + +import java.io.IOException; +import java.util.zip.Checksum; + +/** + * This implementation of {@link ChecksumIndexInput} is based on {@link org.apache.lucene.store.BufferedChecksumIndexInput} + * but uses custom checksum algorithm instead of the hardcoded {@code CRC32} in {@code BufferedChecksumIndexInput}. + * + * @see org.apache.cassandra.index.sai.disk.io.IndexFileUtils.ChecksummingWriter + */ +class BufferedChecksumIndexInput extends ChecksumIndexInput +{ +final IndexInput delegate; +final Checksum digest; + +public BufferedChecksumIndexInput(IndexInput delegate, Checksum digest) +{ +super("BufferedChecksumIndexInput(" + delegate + ')'); +this.delegate = delegate; +this.digest = digest; +} + +public byte readByte() throws IOException +{ +byte b = this.delegate.readByte(); +this.digest.update(b); +return b; +} + +public void readBytes(byte[] b, int offset, int len) throws IOException +{ +this.delegate.readBytes(b, offset, len); +this.digest.update(b, offset, len); +} + +public long getChecksum() +{ +return this.digest.getValue(); +} + +public void close() throws IOException +{ +this.delegate.close(); +} +public long getFilePointer() +{ +return this.delegate.getFilePointer(); +} + +public long length() +{ +return this.delegate.length(); +} + +public IndexInput clone() +{ +throw new UnsupportedOperationException(); +} + +public IndexInput slice(String sliceDescription, long offset, long length) throws IOException +{ +throw new UnsupportedOperationException(); +} +} diff --git a/src/java/org/apache/cassandra/index/sai/disk/io/IndexFileUtils.java b/src/java/org/apache/cassandra/index/sai/disk/io/IndexFileUtils.java index b0145d24fd..4d280ea7a1 100644 --- a/src/java/org/apache/cassandra/index/sai/disk/io/IndexFileUtils.java +++ b/src/java/org/apache/cassandra/index/sai/disk/io/IndexFileUtils.
[cassandra] 01/01: Merge branch 'cassandra-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 7d3a8d53123d8ac493d3fd3821ba54ace075f972 Merge: 6c18a6c4f4 e45c1092f9 Author: Caleb Rackliffe AuthorDate: Wed Oct 18 13:49:26 2023 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Correctly remove Index.Group from IndexRegistry CHANGES.txt| 1 + .../org/apache/cassandra/db/lifecycle/Tracker.java | 8 ++- src/java/org/apache/cassandra/index/Index.java | 64 +++-- .../org/apache/cassandra/index/IndexRegistry.java | 26 +-- .../cassandra/index/SecondaryIndexManager.java | 60 +++- .../cassandra/index/SingletonIndexGroup.java | 17 + .../cassandra/index/sai/StorageAttachedIndex.java | 8 ++- .../index/sai/StorageAttachedIndexGroup.java | 17 +++-- .../org/apache/cassandra/index/sasi/SASIIndex.java | 2 +- .../apache/cassandra/index/CustomIndexTest.java| 75 +--- .../org/apache/cassandra/index/StubIndexGroup.java | 6 ++ .../index/sai/cql/IndexGroupLifecycleTest.java | 81 ++ .../index/sai/cql/StorageAttachedIndexDDLTest.java | 6 +- .../index/sai/functional/CompactionTest.java | 5 +- .../index/sai/metrics/IndexGroupMetricsTest.java | 4 +- .../index/sai/metrics/QueryMetricsTest.java| 6 +- .../index/sai/metrics/StateMetricsTest.java| 6 +- 17 files changed, 261 insertions(+), 131 deletions(-) diff --cc CHANGES.txt index 47703336da,9a49af3955..0a8684d7d6 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,8 -1,5 +1,9 @@@ -5.0-alpha2 +5.1 + * Add ELAPSED command to cqlsh (CASSANDRA-18861) + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) +Merged from 5.0: + * Correctly remove Index.Group from IndexRegistry (CASSANDRA-18905) * Fix vector type to support DDM's mask_default function (CASSANDRA-18889) * Remove unnecessary reporter-config3 dependency (CASSANDRA-18907) * Remove support for empty values on the vector data type (CASSANDRA-18876) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-5.0 updated: Correctly remove Index.Group from IndexRegistry
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new e45c1092f9 Correctly remove Index.Group from IndexRegistry e45c1092f9 is described below commit e45c1092f91edd63591f562b2120ea6a5fd3edd5 Author: Mike Adamson AuthorDate: Wed Oct 4 11:27:50 2023 +0100 Correctly remove Index.Group from IndexRegistry The Index.Group was being left in the list indexGroups in the SecondaryIndexManager because the incorrect key was being used to remove it from the map patch by Mike Adamson; reviewed by Caleb Rackliffe and Zhao Yang for CASSANDRA-18905 Co-authored-by: Zhao Yang --- CHANGES.txt| 1 + .../org/apache/cassandra/db/lifecycle/Tracker.java | 8 ++- src/java/org/apache/cassandra/index/Index.java | 64 +++-- .../org/apache/cassandra/index/IndexRegistry.java | 26 +-- .../cassandra/index/SecondaryIndexManager.java | 60 +++- .../cassandra/index/SingletonIndexGroup.java | 17 + .../cassandra/index/sai/StorageAttachedIndex.java | 8 ++- .../index/sai/StorageAttachedIndexGroup.java | 17 +++-- .../org/apache/cassandra/index/sasi/SASIIndex.java | 2 +- .../apache/cassandra/index/CustomIndexTest.java| 75 +--- .../org/apache/cassandra/index/StubIndexGroup.java | 6 ++ .../index/sai/cql/IndexGroupLifecycleTest.java | 81 ++ .../index/sai/cql/StorageAttachedIndexDDLTest.java | 6 +- .../index/sai/functional/CompactionTest.java | 5 +- .../index/sai/metrics/IndexGroupMetricsTest.java | 4 +- .../index/sai/metrics/QueryMetricsTest.java| 6 +- .../index/sai/metrics/StateMetricsTest.java| 6 +- 17 files changed, 261 insertions(+), 131 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 9377b7a421..9a49af3955 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-alpha2 + * Correctly remove Index.Group from IndexRegistry (CASSANDRA-18905) * Fix vector type to support DDM's mask_default function (CASSANDRA-18889) * Remove unnecessary reporter-config3 dependency (CASSANDRA-18907) * Remove support for empty values on the vector data type (CASSANDRA-18876) diff --git a/src/java/org/apache/cassandra/db/lifecycle/Tracker.java b/src/java/org/apache/cassandra/db/lifecycle/Tracker.java index 061765bd52..e959c72fa9 100644 --- a/src/java/org/apache/cassandra/db/lifecycle/Tracker.java +++ b/src/java/org/apache/cassandra/db/lifecycle/Tracker.java @@ -86,7 +86,7 @@ public class Tracker { private static final Logger logger = LoggerFactory.getLogger(Tracker.class); -private final Collection subscribers = new CopyOnWriteArrayList<>(); +private final List subscribers = new CopyOnWriteArrayList<>(); public final ColumnFamilyStore cfstore; final AtomicReference view; @@ -560,6 +560,12 @@ public class Tracker subscribers.add(consumer); } +@VisibleForTesting +public boolean contains(INotificationConsumer consumer) +{ +return subscribers.contains(consumer); +} + public void unsubscribe(INotificationConsumer consumer) { subscribers.remove(consumer); diff --git a/src/java/org/apache/cassandra/index/Index.java b/src/java/org/apache/cassandra/index/Index.java index f116fdb3e0..fc5f5a6f00 100644 --- a/src/java/org/apache/cassandra/index/Index.java +++ b/src/java/org/apache/cassandra/index/Index.java @@ -23,6 +23,7 @@ package org.apache.cassandra.index; import java.io.UncheckedIOException; import java.util.Collection; import java.util.Collections; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.concurrent.Callable; @@ -55,8 +56,8 @@ import org.apache.cassandra.index.transactions.IndexTransaction; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; import org.apache.cassandra.io.sstable.ReducingKeyIterator; -import org.apache.cassandra.io.sstable.SSTableFlushObserver; import org.apache.cassandra.io.sstable.SSTable; +import org.apache.cassandra.io.sstable.SSTableFlushObserver; import org.apache.cassandra.io.sstable.format.SSTableReader; import org.apache.cassandra.schema.ColumnMetadata; import org.apache.cassandra.schema.IndexMetadata; @@ -275,6 +276,17 @@ public interface Index */ public void register(IndexRegistry registry); +/** + * Unregister current index when it's removed from system + * + * @param registry the index registry to register the instance with + */ +default void unregister(IndexRegistry registry) +{ +// for singleton index, the group key is the index itself +registry.unregisterIndex(this, new Ind
[cassandra] branch trunk updated (6c18a6c4f4 -> 7d3a8d5312)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 6c18a6c4f4 Merge branch 'cassandra-5.0' into trunk new e45c1092f9 Correctly remove Index.Group from IndexRegistry new 7d3a8d5312 Merge branch 'cassandra-5.0' 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: CHANGES.txt| 1 + .../org/apache/cassandra/db/lifecycle/Tracker.java | 8 ++- src/java/org/apache/cassandra/index/Index.java | 64 +++-- .../org/apache/cassandra/index/IndexRegistry.java | 26 +-- .../cassandra/index/SecondaryIndexManager.java | 60 +++- .../cassandra/index/SingletonIndexGroup.java | 17 + .../cassandra/index/sai/StorageAttachedIndex.java | 8 ++- .../index/sai/StorageAttachedIndexGroup.java | 17 +++-- .../org/apache/cassandra/index/sasi/SASIIndex.java | 2 +- .../apache/cassandra/index/CustomIndexTest.java| 75 +--- .../org/apache/cassandra/index/StubIndexGroup.java | 6 ++ .../index/sai/cql/IndexGroupLifecycleTest.java | 81 ++ .../index/sai/cql/StorageAttachedIndexDDLTest.java | 6 +- .../index/sai/functional/CompactionTest.java | 5 +- .../index/sai/metrics/IndexGroupMetricsTest.java | 4 +- .../index/sai/metrics/QueryMetricsTest.java| 6 +- .../index/sai/metrics/StateMetricsTest.java| 6 +- 17 files changed, 261 insertions(+), 131 deletions(-) create mode 100644 test/unit/org/apache/cassandra/index/sai/cql/IndexGroupLifecycleTest.java - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 01/03: ninja-fix: minor post-TCM-rebase cleanup
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 85b4b460603164744f41b9a7d2ae757d88753934 Author: Caleb Rackliffe AuthorDate: Fri Sep 29 16:33:09 2023 -0500 ninja-fix: minor post-TCM-rebase cleanup --- modules/accord | 2 +- src/java/org/apache/cassandra/net/Verb.java| 20 +- .../service/accord/AccordTopologyUtils.java| 8 +- .../test/log/ClusterMetadataTestHelper.java| 1 + test/unit/accord/utils/DefaultRandom.java | 94 test/unit/accord/utils/Gen.java| 179 --- test/unit/accord/utils/Gens.java | 576 - test/unit/accord/utils/Invariants.java | 327 test/unit/accord/utils/Property.java | 382 -- test/unit/accord/utils/RandomSource.java | 361 - test/unit/accord/utils/WrappedRandomSource.java| 97 .../concurrent/SimulatedExecutorFactory.java | 2 +- test/unit/org/apache/cassandra/cql3/CQLTester.java | 1 - .../org/apache/cassandra/repair/FuzzTestBase.java | 18 +- .../service/accord/AccordSyncPropagatorTest.java | 2 +- .../service/accord/AccordTopologyTest.java | 3 +- 16 files changed, 29 insertions(+), 2044 deletions(-) diff --git a/modules/accord b/modules/accord index 79fc1ebf7d..b1befa3cc0 16 --- a/modules/accord +++ b/modules/accord @@ -1 +1 @@ -Subproject commit 79fc1ebf7db6aa5e616dbef1bc61b616fea3c2c6 +Subproject commit b1befa3cc0a8496451bb48ec3bb1c0f56b8c7653 diff --git a/src/java/org/apache/cassandra/net/Verb.java b/src/java/org/apache/cassandra/net/Verb.java index c38ac68d1f..747f91ef40 100644 --- a/src/java/org/apache/cassandra/net/Verb.java +++ b/src/java/org/apache/cassandra/net/Verb.java @@ -130,7 +130,6 @@ import org.apache.cassandra.utils.TimeUUID; import org.apache.cassandra.utils.UUIDSerializer; import static java.util.concurrent.TimeUnit.NANOSECONDS; -import static org.apache.cassandra.net.ResponseHandlerSupplier.RESPONSE_HANDLER; import static org.apache.cassandra.concurrent.Stage.ANTI_ENTROPY; import static org.apache.cassandra.concurrent.Stage.COUNTER_MUTATION; import static org.apache.cassandra.concurrent.Stage.FETCH_LOG; @@ -145,6 +144,7 @@ import static org.apache.cassandra.concurrent.Stage.PAXOS_REPAIR; import static org.apache.cassandra.concurrent.Stage.READ; import static org.apache.cassandra.concurrent.Stage.REQUEST_RESPONSE; import static org.apache.cassandra.concurrent.Stage.TRACING; +import static org.apache.cassandra.net.ResponseHandlerSupplier.RESPONSE_HANDLER; import static org.apache.cassandra.net.Verb.Kind.CUSTOM; import static org.apache.cassandra.net.Verb.Kind.NORMAL; import static org.apache.cassandra.net.Verb.Priority.P0; @@ -229,7 +229,7 @@ public enum Verb // repair; mostly doesn't use callbacks and sends responses as their own request messages, with matching sessions by uuid; should eventually harmonize and make idiomatic // for the repair messages that implement retry logic, use rpcTimeout so the single request fails faster, then retries can be used to recover -REPAIR_RSP (100, P1, repairTimeout, REQUEST_RESPONSE, () -> NoPayload.serializer, () -> ResponseVerbHandler.instance ), +REPAIR_RSP (100, P1, repairTimeout, REQUEST_RESPONSE, () -> NoPayload.serializer, RESPONSE_HANDLER ), VALIDATION_RSP (102, P1, repairValidationRspTimeout, ANTI_ENTROPY, () -> ValidationResponse.serializer,() -> RepairMessageVerbHandler.instance(), REPAIR_RSP ), VALIDATION_REQ (101, P1, repairWithBackoffTimeout, ANTI_ENTROPY, () -> ValidationRequest.serializer, () -> RepairMessageVerbHandler.instance(), REPAIR_RSP ), SYNC_RSP (104, P1, repairWithBackoffTimeout, ANTI_ENTROPY, () -> SyncResponse.serializer, () -> RepairMessageVerbHandler.instance(), REPAIR_RSP ), @@ -274,25 +274,25 @@ public enum Verb PAXOS2_CLEANUP_COMPLETE_REQ (48, P2, repairTimeout, PAXOS_REPAIR, () -> PaxosCleanupComplete.serializer, () -> PaxosCleanupComplete.verbHandler, PAXOS2_CLEANUP_COMPLETE_RSP ), // transactional cluster metadata -TCM_COMMIT_RSP (801, P1, rpcTimeout, INTERNAL_METADATA, MessageSerializers::commitResultSerializer, () -> ResponseVerbHandler.instance ), +TCM_COMMIT_RSP (801, P1, rpcTimeout, INTERNAL_METADATA, MessageSerializers::commitResultSerializer, RESPONSE_HANDLER ), TCM_COM
[cassandra] 02/03: ninja-fix: exclude accord_demo.txt from rat checks
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 8bb7814e9a46d895975d0bd819585e57c7ceccfa Author: Caleb Rackliffe AuthorDate: Fri Sep 29 22:38:14 2023 -0500 ninja-fix: exclude accord_demo.txt from rat checks --- .build/build-rat.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/.build/build-rat.xml b/.build/build-rat.xml index 2aaf9ad35c..90f2bdb66f 100644 --- a/.build/build-rat.xml +++ b/.build/build-rat.xml @@ -77,6 +77,7 @@ + - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 03/03: Fix AccordJournalTest and ConfigCompatibilityTest, and revert the sendMessageWithFailureCB() callback to printing just the repair failure reason in its error message
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cep-15-accord in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 2c79de82a529df43ebff0932c6739143a26bade8 Author: Caleb Rackliffe AuthorDate: Tue Oct 3 11:42:53 2023 -0500 Fix AccordJournalTest and ConfigCompatibilityTest, and revert the sendMessageWithFailureCB() callback to printing just the repair failure reason in its error message --- src/java/org/apache/cassandra/repair/messages/RepairMessage.java | 4 ++-- src/java/org/apache/cassandra/utils/FBUtilities.java | 3 --- test/data/config/version=5.0-alpha1.yml | 2 +- .../org/apache/cassandra/config/ConfigCompatibilityTest.java | 1 + .../org/apache/cassandra/service/accord/AccordJournalTest.java | 9 + 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/java/org/apache/cassandra/repair/messages/RepairMessage.java b/src/java/org/apache/cassandra/repair/messages/RepairMessage.java index d3007aafab..b616d033df 100644 --- a/src/java/org/apache/cassandra/repair/messages/RepairMessage.java +++ b/src/java/org/apache/cassandra/repair/messages/RepairMessage.java @@ -195,9 +195,9 @@ public abstract class RepairMessage } @Override -public void onFailure(InetAddressAndPort from, RequestFailure failureReason) +public void onFailure(InetAddressAndPort from, RequestFailure failure) { -failureCallback.onFailure(RepairException.error(request.desc, PreviewKind.NONE, String.format("Got %s failure from %s: %s", verb, from, failureReason))); +failureCallback.onFailure(RepairException.error(request.desc, PreviewKind.NONE, String.format("Got %s failure from %s: %s", verb, from, failure.reason))); } @Override diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java index 8ef8f9ea6c..7241b5acab 100644 --- a/src/java/org/apache/cassandra/utils/FBUtilities.java +++ b/src/java/org/apache/cassandra/utils/FBUtilities.java @@ -95,7 +95,6 @@ import org.apache.cassandra.utils.concurrent.FutureCombiner; import org.apache.cassandra.utils.concurrent.UncheckedInterruptedException; import org.objectweb.asm.Opcodes; -import static org.apache.cassandra.config.CassandraRelevantProperties.CASSANDRA_AVAILABLE_PROCESSORS; import static org.apache.cassandra.config.CassandraRelevantProperties.GIT_SHA; import static org.apache.cassandra.config.CassandraRelevantProperties.LINE_SEPARATOR; import static org.apache.cassandra.config.CassandraRelevantProperties.OS_NAME; @@ -131,8 +130,6 @@ public class FBUtilities private static volatile String previousReleaseVersionString; -private static final int availableProcessors = CASSANDRA_AVAILABLE_PROCESSORS.getInt(DatabaseDescriptor.getAvailableProcessors()); - public static void setAvailableProcessors(int value) { DatabaseDescriptor.setAvailableProcessors(value); diff --git a/test/data/config/version=5.0-alpha1.yml b/test/data/config/version=5.0-alpha1.yml index 21630a19d2..6e426332bb 100644 --- a/test/data/config/version=5.0-alpha1.yml +++ b/test/data/config/version=5.0-alpha1.yml @@ -403,7 +403,7 @@ max_concurrent_automatic_sstable_upgrades: "java.lang.Integer" maximum_replication_factor_warn_threshold: "java.lang.Integer" denylist_reads_enabled: "java.lang.Boolean" permissions_cache_active_update: "java.lang.Boolean" -available_processors: "java.lang.Integer" +available_processors: "org.apache.cassandra.config.OptionaldPositiveInt" file_cache_round_up: "java.lang.Boolean" secondary_indexes_per_table_warn_threshold: "java.lang.Integer" tables_warn_threshold: "java.lang.Integer" diff --git a/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java b/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java index 51e0b0ceda..475a8db2e8 100644 --- a/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java +++ b/test/unit/org/apache/cassandra/config/ConfigCompatibilityTest.java @@ -101,6 +101,7 @@ public class ConfigCompatibilityTest .add("authenticator types do not match; org.apache.cassandra.config.ParameterizedClass != java.lang.String") .add("Property internode_authenticator used to be a value-type, but now is nested type class org.apache.cassandra.config.ParameterizedClass") .add("Property authenticator used to be a value-type, but now is nested type class org.apache.cassandra.config.ParameterizedClass") +
[cassandra] branch cep-15-accord-10-3-2023 created (now 5985d50b7a)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch cep-15-accord-10-3-2023 in repository https://gitbox.apache.org/repos/asf/cassandra.git at 5985d50b7a CASSANDRA-18774: Fix pre-commit hook No new revisions were added by this update. - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra-accord] branch trunk updated: - add shareable APPLIED and INVALIDATED implementations of Result - API changes to support splicing in complete update fragments from PartialTxn as mutations a
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra-accord.git The following commit(s) were added to refs/heads/trunk by this push: new df492dfd - add shareable APPLIED and INVALIDATED implementations of Result - API changes to support splicing in complete update fragments from PartialTxn as mutations are finally being applied df492dfd is described below commit df492dfd2ffe993c33761d0531ac5b979b80f080 Author: Caleb Rackliffe AuthorDate: Thu Mar 23 14:47:54 2023 -0500 - add shareable APPLIED and INVALIDATED implementations of Result - API changes to support splicing in complete update fragments from PartialTxn as mutations are finally being applied patch by Caleb Rackliffe; reviewed by David Capwell, Benedict Elliot Smith, and Ariel Weisberg for CASSANDRA-18355 --- accord-core/src/main/java/accord/api/Result.java | 10 -- accord-core/src/main/java/accord/api/Write.java| 3 ++- accord-core/src/main/java/accord/local/Command.java| 2 +- accord-core/src/main/java/accord/local/Commands.java | 2 +- accord-core/src/main/java/accord/primitives/Writes.java| 4 ++-- accord-core/src/test/java/accord/impl/list/ListWrite.java | 3 ++- accord-core/src/test/java/accord/impl/mock/MockStore.java | 2 +- accord-core/src/test/java/accord/messages/ReadDataTest.java| 2 +- .../src/main/java/accord/maelstrom/MaelstromWrite.java | 3 ++- 9 files changed, 20 insertions(+), 11 deletions(-) diff --git a/accord-core/src/main/java/accord/api/Result.java b/accord-core/src/main/java/accord/api/Result.java index d8b8fd6d..0509c476 100644 --- a/accord-core/src/main/java/accord/api/Result.java +++ b/accord-core/src/main/java/accord/api/Result.java @@ -23,11 +23,17 @@ import accord.primitives.ProgressToken; /** * A result to be returned to a client, or be stored in a node's command state. - * - * TODO (expected, efficiency): support minimizing the result for storage in a node's command state (e.g. to only retain success/failure) */ public interface Result extends Outcome { +Result APPLIED = new Result() { }; + +Result INVALIDATED = new Result() +{ +@Override +public ProgressToken asProgressToken() { return ProgressToken.INVALIDATED; } +}; + @Override default ProgressToken asProgressToken() { return ProgressToken.APPLIED; } } diff --git a/accord-core/src/main/java/accord/api/Write.java b/accord-core/src/main/java/accord/api/Write.java index ebe25903..62635379 100644 --- a/accord-core/src/main/java/accord/api/Write.java +++ b/accord-core/src/main/java/accord/api/Write.java @@ -19,6 +19,7 @@ package accord.api; import accord.local.SafeCommandStore; +import accord.primitives.PartialTxn; import accord.primitives.Seekable; import accord.primitives.Timestamp; import accord.utils.async.AsyncChain; @@ -30,5 +31,5 @@ import accord.utils.async.AsyncChain; */ public interface Write { -AsyncChain apply(Seekable key, SafeCommandStore safeStore, Timestamp executeAt, DataStore store); +AsyncChain apply(Seekable key, SafeCommandStore safeStore, Timestamp executeAt, DataStore store, PartialTxn txn); } diff --git a/accord-core/src/main/java/accord/local/Command.java b/accord-core/src/main/java/accord/local/Command.java index 47f9caba..194fe2da 100644 --- a/accord-core/src/main/java/accord/local/Command.java +++ b/accord-core/src/main/java/accord/local/Command.java @@ -650,7 +650,7 @@ public abstract class Command implements CommonAttributes public static Truncated invalidated(TxnId txnId, Listeners.Immutable durableListeners) { -return new Truncated(txnId, SaveStatus.Invalidated, DurableOrInvalidated, null, Timestamp.NONE, durableListeners, null, null); +return new Truncated(txnId, SaveStatus.Invalidated, DurableOrInvalidated, null, Timestamp.NONE, durableListeners, null, Result.INVALIDATED); } @Override diff --git a/accord-core/src/main/java/accord/local/Commands.java b/accord-core/src/main/java/accord/local/Commands.java index 38d3f18b..52c37a5f 100644 --- a/accord-core/src/main/java/accord/local/Commands.java +++ b/accord-core/src/main/java/accord/local/Commands.java @@ -582,7 +582,7 @@ public class Commands // that was pre-bootstrap for some range (so redundant and we may have gone ahead of), but had to be executed locally // for another range CommandStore unsafeStore = safeStore.commandStore(); -return command.writes().apply(safeStore, applyRanges(safeStore, command.executeAt())) +return command.writes().apply(safeStore, applyRanges(safeStore, command.executeAt()), command.partialTxn()) .flatMap(unused -> unsafeStore.submit(context, ss -> { postApply(ss,
[cassandra] branch trunk updated (1e19887f72 -> 49e04e8df2)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 1e19887f72 Merge branch 'cassandra-5.0' into trunk new 655a2455ac Reduce size of per-SSTable index components for SAI new 49e04e8df2 Merge branch 'cassandra-5.0' 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: .build/parent-pom-template.xml | 4 +- CHANGES.txt| 1 + .../config/CassandraRelevantProperties.java| 10 + .../apache/cassandra/index/sai/SSTableContext.java | 2 +- .../index/sai/StorageAttachedIndexGroup.java | 4 +- .../index/sai/disk/PerSSTableIndexWriter.java | 4 + .../cassandra/index/sai/disk/RowMapping.java | 11 +- .../index/sai/disk/StorageAttachedIndexWriter.java | 10 + .../index/sai/disk/format/IndexComponent.java | 22 +- .../index/sai/disk/format/IndexDescriptor.java | 68 +++- .../index/sai/disk/format/OnDiskFormat.java| 8 +- .../index/sai/disk/io/IndexFileUtils.java | 12 +- .../cassandra/index/sai/disk/v1/LongArray.java | 15 + .../index/sai/disk/v1/PerColumnIndexFiles.java | 8 +- .../index/sai/disk/v1/RowAwarePrimaryKeyMap.java | 201 -- .../index/sai/disk/v1/SSTableComponentsWriter.java | 66 +++- .../index/sai/disk/v1/SkinnyPrimaryKeyMap.java | 208 +++ .../index/sai/disk/v1/V1OnDiskFormat.java | 43 ++- .../index/sai/disk/v1/WidePrimaryKeyMap.java | 179 + .../sai/disk/v1/bbtree/NumericIndexWriter.java | 2 +- .../disk/v1/bitpack/AbstractBlockPackedReader.java | 166 + .../sai/disk/v1/bitpack/NumericValuesWriter.java | 30 +- .../index/sai/disk/v1/keystore/KeyLookup.java | 377 +++ .../KeyLookupMeta.java}| 27 +- .../index/sai/disk/v1/keystore/KeyStoreWriter.java | 218 +++ .../index/sai/disk/v1/postings/PostingsReader.java | 6 + .../sai/disk/v1/sortedterms/SortedTermsMeta.java | 48 --- .../sai/disk/v1/sortedterms/SortedTermsReader.java | 234 .../sai/disk/v1/sortedterms/SortedTermsWriter.java | 214 --- .../sai/disk/v1/sortedterms/package-info.java | 58 --- .../index/sai/disk/v1/trie/TriePrefixSearcher.java | 98 - .../sai/iterators/KeyRangeConcatIterator.java | 3 +- .../cassandra/index/sai/utils/PrimaryKey.java | 98 +++-- .../distributed/test/sai/IndexStreamingTest.java | 30 +- .../test/microbench/sai/KeyLookupBench.java| 205 ++ .../org/apache/cassandra/index/sai/SAITester.java | 2 +- .../index/sai/cql/StorageAttachedIndexDDLTest.java | 12 +- .../index/sai/cql/TokenCollisionTest.java | 120 ++ .../cassandra/index/sai/disk/NodeStartupTest.java | 2 +- .../index/sai/disk/v1/SegmentFlushTest.java| 6 +- .../index/sai/disk/v1/TermsReaderTest.java | 8 +- .../index/sai/disk/v1/WideRowPrimaryKeyTest.java | 115 ++ .../BlockBalancedTreePostingsWriterTest.java | 6 +- .../v1/bbtree/BlockBalancedTreeReaderTest.java | 4 +- .../sai/disk/v1/bbtree/NumericIndexWriterTest.java | 8 +- .../sai/disk/v1/bitpack/NumericValuesTest.java | 6 +- .../index/sai/disk/v1/keystore/KeyLookupTest.java | 413 .../sai/disk/v1/sortedterms/SortedTermsTest.java | 415 - .../sai/disk/v1/trie/TriePrefixSearcherTest.java | 160 .../sai/disk/v1/trie/TrieTermsDictionaryTest.java | 6 +- .../index/sai/disk/v1/trie/TrieValidationTest.java | 93 - .../index/sai/functional/GroupComponentsTest.java | 6 +- .../sai/iterators/KeyRangeConcatIteratorTest.java | 22 +- .../index/sai/metrics/IndexGroupMetricsTest.java | 4 +- .../index/sai/utils/AbstractPrimaryKeyTester.java | 36 +- .../cassandra/index/sai/utils/PrimaryKeyTest.java | 42 +-- .../index/sai/utils/SAIRandomizedTester.java | 21 +- 57 files changed, 2417 insertions(+), 1780 deletions(-) delete mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/RowAwarePrimaryKeyMap.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/SkinnyPrimaryKeyMap.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/WidePrimaryKeyMap.java create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/keystore/KeyLookup.java copy src/java/org/apache/cassandra/index/sai/disk/v1/{bitpack/NumericValuesMeta.java => keystore/KeyLookupMeta.java} (61%) create mode 100644 src/java/org/apache/cassandra/index/sai/disk/v1/keystore/KeyStoreWriter.java delete mode 100644 src/java/org/apache/cassandra/index/
[cassandra] 01/01: Merge branch 'cassandra-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 49e04e8df25c7e47a1e045f51132b9a0bdf90e1f Merge: 1e19887f72 655a2455ac Author: Caleb Rackliffe AuthorDate: Fri Aug 18 14:51:11 2023 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Reduce size of per-SSTable index components for SAI .build/parent-pom-template.xml | 4 +- CHANGES.txt| 1 + .../config/CassandraRelevantProperties.java| 10 + .../apache/cassandra/index/sai/SSTableContext.java | 2 +- .../index/sai/StorageAttachedIndexGroup.java | 4 +- .../index/sai/disk/PerSSTableIndexWriter.java | 4 + .../cassandra/index/sai/disk/RowMapping.java | 11 +- .../index/sai/disk/StorageAttachedIndexWriter.java | 10 + .../index/sai/disk/format/IndexComponent.java | 22 +- .../index/sai/disk/format/IndexDescriptor.java | 68 +++- .../index/sai/disk/format/OnDiskFormat.java| 8 +- .../index/sai/disk/io/IndexFileUtils.java | 12 +- .../cassandra/index/sai/disk/v1/LongArray.java | 15 + .../index/sai/disk/v1/PerColumnIndexFiles.java | 8 +- .../index/sai/disk/v1/RowAwarePrimaryKeyMap.java | 201 -- .../index/sai/disk/v1/SSTableComponentsWriter.java | 66 +++- .../index/sai/disk/v1/SkinnyPrimaryKeyMap.java | 208 +++ .../index/sai/disk/v1/V1OnDiskFormat.java | 43 ++- .../index/sai/disk/v1/WidePrimaryKeyMap.java | 179 + .../sai/disk/v1/bbtree/NumericIndexWriter.java | 2 +- .../disk/v1/bitpack/AbstractBlockPackedReader.java | 166 + .../sai/disk/v1/bitpack/NumericValuesWriter.java | 30 +- .../index/sai/disk/v1/keystore/KeyLookup.java | 377 +++ .../KeyLookupMeta.java}| 25 +- .../index/sai/disk/v1/keystore/KeyStoreWriter.java | 218 +++ .../index/sai/disk/v1/postings/PostingsReader.java | 6 + .../sai/disk/v1/sortedterms/SortedTermsReader.java | 234 .../sai/disk/v1/sortedterms/SortedTermsWriter.java | 214 --- .../sai/disk/v1/sortedterms/package-info.java | 58 --- .../index/sai/disk/v1/trie/TriePrefixSearcher.java | 98 - .../sai/iterators/KeyRangeConcatIterator.java | 3 +- .../cassandra/index/sai/utils/PrimaryKey.java | 98 +++-- .../distributed/test/sai/IndexStreamingTest.java | 30 +- .../test/microbench/sai/KeyLookupBench.java| 205 ++ .../org/apache/cassandra/index/sai/SAITester.java | 2 +- .../index/sai/cql/StorageAttachedIndexDDLTest.java | 12 +- .../index/sai/cql/TokenCollisionTest.java | 120 ++ .../cassandra/index/sai/disk/NodeStartupTest.java | 2 +- .../index/sai/disk/v1/SegmentFlushTest.java| 6 +- .../index/sai/disk/v1/TermsReaderTest.java | 8 +- .../index/sai/disk/v1/WideRowPrimaryKeyTest.java | 115 ++ .../BlockBalancedTreePostingsWriterTest.java | 6 +- .../v1/bbtree/BlockBalancedTreeReaderTest.java | 4 +- .../sai/disk/v1/bbtree/NumericIndexWriterTest.java | 8 +- .../sai/disk/v1/bitpack/NumericValuesTest.java | 6 +- .../index/sai/disk/v1/keystore/KeyLookupTest.java | 413 .../sai/disk/v1/sortedterms/SortedTermsTest.java | 415 - .../sai/disk/v1/trie/TriePrefixSearcherTest.java | 160 .../sai/disk/v1/trie/TrieTermsDictionaryTest.java | 6 +- .../index/sai/disk/v1/trie/TrieValidationTest.java | 93 - .../index/sai/functional/GroupComponentsTest.java | 6 +- .../sai/iterators/KeyRangeConcatIteratorTest.java | 22 +- .../index/sai/metrics/IndexGroupMetricsTest.java | 4 +- .../index/sai/utils/AbstractPrimaryKeyTester.java | 36 +- .../cassandra/index/sai/utils/PrimaryKeyTest.java | 42 +-- .../index/sai/utils/SAIRandomizedTester.java | 21 +- 56 files changed, 2414 insertions(+), 1733 deletions(-) diff --cc CHANGES.txt index 82c91d9902,f954f08550..a4a5ea0870 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,5 -1,5 +1,6 @@@ -5.0-alpha1 +5.1 +Merged from 5.0: + * Reduce size of per-SSTable index components for SAI (CASSANDRA-18673) * Remove unnecessary Netty dependencies after upgrade to version 4.1.96 (CASSANDRA-18729) * Prevent InaccessibleObjectException when the Leak Detector is traversing objects (CASSANDRA-18708) * Remove legacy command line options from cassandra-stress (CASSANDRA-18529) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch trunk updated (7022d1a5e6 -> 5ade7a6cd8)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from 7022d1a5e6 Merge branch 'cassandra-5.0' into trunk new f8d4e2a3c8 Disable heap dump creation by default on crash for tests that use test/conf/cassandra.yaml new 5ade7a6cd8 Merge branch 'cassandra-5.0' 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: test/conf/cassandra.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) - 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-5.0' into trunk
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 5ade7a6cd8f5e0ca1a633032e935f7148f853be6 Merge: 7022d1a5e6 f8d4e2a3c8 Author: Caleb Rackliffe AuthorDate: Fri Aug 11 10:37:37 2023 -0500 Merge branch 'cassandra-5.0' into trunk * cassandra-5.0: Disable heap dump creation by default on crash for tests that use test/conf/cassandra.yaml test/conf/cassandra.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch cassandra-5.0 updated: Disable heap dump creation by default on crash for tests that use test/conf/cassandra.yaml
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch cassandra-5.0 in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/cassandra-5.0 by this push: new f8d4e2a3c8 Disable heap dump creation by default on crash for tests that use test/conf/cassandra.yaml f8d4e2a3c8 is described below commit f8d4e2a3c80d5d2be1e270e7ac601f4bc0a17fe7 Author: Caleb Rackliffe AuthorDate: Thu Aug 10 10:56:30 2023 -0500 Disable heap dump creation by default on crash for tests that use test/conf/cassandra.yaml patch by Caleb Rackliffe; reviewed by Brandon Williams and Ekaterina Dimitrova for CASSANDRA-18741 --- test/conf/cassandra.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/conf/cassandra.yaml b/test/conf/cassandra.yaml index 379792a662..0e0da455a9 100644 --- a/test/conf/cassandra.yaml +++ b/test/conf/cassandra.yaml @@ -56,7 +56,7 @@ full_query_logging_options: auto_hints_cleanup_enabled: true heap_dump_path: build/test -dump_heap_on_uncaught_exception: true +dump_heap_on_uncaught_exception: false read_thresholds_enabled: true coordinator_read_size_warn_threshold: 1024KiB - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch trunk updated: Ensure that SSTablesSystemViewTest compacts to a single SSTable in testVirtualTableThroughIndexLifeCycle even w/ UCS
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/trunk by this push: new 5bdfd790b7 Ensure that SSTablesSystemViewTest compacts to a single SSTable in testVirtualTableThroughIndexLifeCycle even w/ UCS 5bdfd790b7 is described below commit 5bdfd790b7b8cc638a96efb5c34181ece35b04a1 Author: Caleb Rackliffe AuthorDate: Tue Aug 1 14:53:07 2023 -0500 Ensure that SSTablesSystemViewTest compacts to a single SSTable in testVirtualTableThroughIndexLifeCycle even w/ UCS patch by Caleb Rackliffe; reviewed by Mick Semb Wever for CASSANDRA-18703 --- .../apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java | 7 ++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java b/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java index d0a481860f..2150d356a2 100644 --- a/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java +++ b/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java @@ -20,11 +20,14 @@ package org.apache.cassandra.index.sai.virtual; import java.util.Objects; import com.google.common.collect.ImmutableList; +import com.googlecode.concurrenttrees.common.Iterables; import org.junit.BeforeClass; import org.junit.Test; +import org.apache.cassandra.Util; import org.apache.cassandra.cql3.CQLTester; import org.apache.cassandra.db.ColumnFamilyStore; +import org.apache.cassandra.db.lifecycle.SSTableSet; import org.apache.cassandra.db.virtual.VirtualKeyspace; import org.apache.cassandra.db.virtual.VirtualKeyspaceRegistry; import org.apache.cassandra.dht.AbstractBounds; @@ -122,8 +125,10 @@ public class SSTablesSystemViewTest extends SAITester assertRowsIgnoringOrder(execute(SELECT), row1, row2, row6, row3, row4, row5, row7); // compact the table and verify that the virtual table has a single entry per index -compact(); +ColumnFamilyStore cfs = getCurrentColumnFamilyStore(); +Util.compact(cfs, Iterables.toList(cfs.getSSTables(SSTableSet.LIVE))); waitForCompactions(); + SSTableId[] ids5 = currentIdsSorted(); // Compaction may result in sstables with generation 5 or 6. Try both. // key 4, key 6 are not indexable on v1 - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] branch trunk updated: ninja-fix: make sure testVirtualTableThroughIndexLifeCycle disabled auto-compaction
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git The following commit(s) were added to refs/heads/trunk by this push: new 3ba4cd24a0 ninja-fix: make sure testVirtualTableThroughIndexLifeCycle disabled auto-compaction 3ba4cd24a0 is described below commit 3ba4cd24a0c6b5a90ac0ed57ec2eec152308f211 Author: Caleb Rackliffe AuthorDate: Thu Jul 27 14:02:10 2023 -0500 ninja-fix: make sure testVirtualTableThroughIndexLifeCycle disabled auto-compaction --- .../org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java b/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java index 580d2694d5..d0a481860f 100644 --- a/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java +++ b/test/unit/org/apache/cassandra/index/sai/virtual/SSTablesSystemViewTest.java @@ -73,6 +73,7 @@ public class SSTablesSystemViewTest extends SAITester public void testVirtualTableThroughIndexLifeCycle() throws Throwable { createTable("CREATE TABLE %s (k text, c text, v1 text, v2 text, PRIMARY KEY (k, c))"); +disableCompaction(); String v1IndexName = createIndex("CREATE INDEX ON %s(v1) USING 'sai'"); String insert = "INSERT INTO %s(k, c, v1, v2) VALUES (?, ?, ?, ?)"; - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 18/20: Release notes and README updates for CEP-7 (Storage-Attached Indexes)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 3e38b3d641c076f45ebc108f68218529766c7492 Author: Caleb Rackliffe AuthorDate: Tue Jul 18 12:46:18 2023 -0700 Release notes and README updates for CEP-7 (Storage-Attached Indexes) --- CHANGES.txt | 1 + NEWS.txt | 2 ++ src/java/org/apache/cassandra/index/sai/README.md | 9 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 153117ba85..3b7d1bc9ff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0 + * CEP-7: Storage Attached Indexes (CASSANDRA-16052) * Add equals/hashCode override for ServerEncryptionOptions (CASSANDRA-18428) * Upgrade ECJ to version 3.33.0 (CASSANDRA-18190) * Fix ClassCastException from jdk GaloisCounterMode when using JDK17 provider (CASSANDRA-18180) diff --git a/NEWS.txt b/NEWS.txt index d2c9f21945..91fac33c98 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -71,6 +71,8 @@ using the provided 'sstableupgrade' tool. New features +- Added a new secondary index implementation, Storage-Attached Indexes (SAI). Overview documentation and a basic + tutorial can be found at src/java/org/apache/cassandra/index/sai/README.md. - *Experimental* support for Java 17 has been added. JVM options that differ between or are specific for Java 17 have been added into jvm17.options. IMPORTANT: Running C* on Java 17 is *experimental* and do it at your own risk. diff --git a/src/java/org/apache/cassandra/index/sai/README.md b/src/java/org/apache/cassandra/index/sai/README.md index 1b434dba3c..36176a4c61 100644 --- a/src/java/org/apache/cassandra/index/sai/README.md +++ b/src/java/org/apache/cassandra/index/sai/README.md @@ -19,24 +19,25 @@ # Storage-Attached Indexing ## Overview -Storage-attached indexing is a column based secondary indexing apparatus for Cassandra. +Storage-attached indexing is a column based local secondary index implementation for Cassandra. The project was inspired by SASI (SSTable-Attached Secondary Indexes) and retains some of its high-level architectural character (and even some actual code), but makes significant improvements in a number of areas: - The on-disk/SSTable index formats for both string and numeric data have been completely replaced. Strings are indexed - on disk using our proprietary on-disk byte-ordered trie data structure, while numeric types are indexed using a - balanced tree. + on disk using a byte-ordered trie data structure, while numeric types are indexed using a block-oriented balanced tree. - While indexes continue to be managed at the column level from the user's perspective, the storage design at the column index level is row-based, with related offset and token information stored only once at the SSTable level. This drastically reduces our on-disk footprint when several columns are indexed on the same table. - Tracing, metrics, virtual table-based metadata and snapshot-based backup/restore are supported out of the box. +- On-disk index components can be streamed completely when entire SSTable streaming is enabled. +- Incremental index building is supported, and on-disk index components are included in snapshots. Many similarities with standard secondary indexes remain: - The full set of C* consistency levels is supported for both reads and writes. - Index updates are synchronous with mutations and do not require any kind of read-before-write. -- Queries are implemented on the back of C* range reads. +- Global queries are implemented on the back of C* range reads. - Paging is supported. - Only token ordering of results is supported. - Index builds are visible to operators as compactions and are executed on compaction threads. - To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org
[cassandra] 15/20: Fix concurrency in bbtree reader by cloning state
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 2531cb045897d5b771f79039d194a1f679d8629a Author: Mike Adamson AuthorDate: Thu Jul 13 11:24:55 2023 +0100 Fix concurrency in bbtree reader by cloning state patch by Mike Adamson; reviewed by Andrés de la Peña and Caleb Rackliffe for CASSANDRA-18669 --- .../disk/v1/bbtree/BlockBalancedTreeReader.java| 33 ++-- .../disk/v1/bbtree/BlockBalancedTreeWalker.java| 152 +--- .../v1/bbtree/BlockBalancedTreeReaderTest.java | 192 + .../sai/disk/v1/bbtree/BlockBalancedTreeTest.java | 54 +++--- 4 files changed, 265 insertions(+), 166 deletions(-) diff --git a/src/java/org/apache/cassandra/index/sai/disk/v1/bbtree/BlockBalancedTreeReader.java b/src/java/org/apache/cassandra/index/sai/disk/v1/bbtree/BlockBalancedTreeReader.java index 59271e3c14..53cac195e0 100644 --- a/src/java/org/apache/cassandra/index/sai/disk/v1/bbtree/BlockBalancedTreeReader.java +++ b/src/java/org/apache/cassandra/index/sai/disk/v1/bbtree/BlockBalancedTreeReader.java @@ -78,17 +78,17 @@ public class BlockBalancedTreeReader extends BlockBalancedTreeWalker implements this.indexContext = indexContext; this.postingsFile = postingsFile; this.postingsIndex = new BlockBalancedTreePostingsIndex(postingsFile, treePostingsRoot); -leafOrderMapBitsRequired = DirectWriter.unsignedBitsRequired(state.maxPointsInLeafNode - 1); +leafOrderMapBitsRequired = DirectWriter.unsignedBitsRequired(maxValuesInLeafNode - 1); } public int getBytesPerValue() { -return state.bytesPerValue; +return bytesPerValue; } public long getPointCount() { -return state.valueCount; +return valueCount; } @Override @@ -101,7 +101,7 @@ public class BlockBalancedTreeReader extends BlockBalancedTreeWalker implements @SuppressWarnings({"resource", "RedundantSuppression"}) public PostingList intersect(IntersectVisitor visitor, QueryEventListener.BalancedTreeEventListener listener, QueryContext context) { -Relation relation = visitor.compare(state.minPackedValue, state.maxPackedValue); +Relation relation = visitor.compare(minPackedValue, maxPackedValue); if (relation == Relation.CELL_OUTSIDE_QUERY) { @@ -113,7 +113,6 @@ public class BlockBalancedTreeReader extends BlockBalancedTreeWalker implements IndexInput treeInput = IndexFileUtils.instance.openInput(treeIndexFile); IndexInput postingsInput = IndexFileUtils.instance.openInput(postingsFile); IndexInput postingsSummaryInput = IndexFileUtils.instance.openInput(postingsFile); -state.reset(); Intersection intersection = relation == Relation.CELL_INSIDE_QUERY ? new Intersection(treeInput, postingsInput, postingsSummaryInput, listener, context) @@ -131,6 +130,7 @@ public class BlockBalancedTreeReader extends BlockBalancedTreeWalker implements private final Stopwatch queryExecutionTimer = Stopwatch.createStarted(); final QueryContext context; +final TraversalState state; final IndexInput treeInput; final IndexInput postingsInput; final IndexInput postingsSummaryInput; @@ -140,12 +140,13 @@ public class BlockBalancedTreeReader extends BlockBalancedTreeWalker implements Intersection(IndexInput treeInput, IndexInput postingsInput, IndexInput postingsSummaryInput, QueryEventListener.BalancedTreeEventListener listener, QueryContext context) { +this.state = newTraversalState(); this.treeInput = treeInput; this.postingsInput = postingsInput; this.postingsSummaryInput = postingsSummaryInput; this.listener = listener; this.context = context; -postingLists = new PriorityQueue<>(state.numLeaves, COMPARATOR); +postingLists = new PriorityQueue<>(numLeaves, COMPARATOR); } public PostingList execute() @@ -247,14 +248,14 @@ public class BlockBalancedTreeReader extends BlockBalancedTreeWalker implements { super(treeInput, postingsInput, postingsSummaryInput, listener, context); this.visitor = visitor; -this.packedValue = new byte[state.bytesPerValue]; -this.origIndex = new short[state.maxPointsInLeafNode]; +this.packedValue = new byte[bytesPerValue]; +this.origIndex = new short[maxValuesInLeafNode]; } @Override public void executeInternal() throws IOException { -collectPostingLists(state.minPackedValue, state.maxPackedValue); +collectPostingList
[cassandra] branch trunk updated (a565711056 -> 94964b54b6)
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a change to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git from a565711056 Fix data corruption handling issues new 303ca55a5d Add Index Group Interface for Storage Attached Index new cde91e56f0 In-memory index implementation with query path new e5e0f3a844 Literal on-disk index and index write path (#9) new 631ae36ca5 Allow CQL queries on multiple indexes without ALLOW FILTERING new 01aeb616be Unify CQLTester#waitForIndex and SAITester#waitForIndexQueryable new c712312b8f post-rebase fixes for the rebase on trunk at fad1f7457032544ab6a7b40c5d38ecb8b25899bb new 93b89b2e79 send SSTableAddedNotification before MemtableDiscardedNotification to fix index data visilibity issue new 661a1d5bb6 fix Segment#intersects to compare bound instead of token new ebea2ba6ad Upgrade to lucene-core 9.7.0 new 98fefc1557 Stream all compatible components registered by an SSTable new 6f125c8042 Numeric on-disk index write and search new b396faf913 Various changes to SAI index validation new cba3e19ccd Query all ranges at once for SAI distributed queries new eb208d3561 Add basic text analysis to SAI, including "case_sensitive", "normalize", and "ascii" modes new 2531cb0458 Fix concurrency in bbtree reader by cloning state new b57181032d Fix KeyRangeIntersectionIterator count new 394d4b1168 Add support for index implementation selection via USING for CREATE INDEX new 3e38b3d641 Release notes and README updates for CEP-7 (Storage-Attached Indexes) new 83203a14c4 Importer should build SSTable indexes successfully before making new SSTables readable new 94964b54b6 minor fixes after rebase on trunk at c1bf002234bd44bce120658e9b08b3d67901e5bb The 20 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: .build/cassandra-build-deps-template.xml |4 + .build/cassandra-deps-template.xml | 12 +- .build/parent-pom-template.xml | 27 +- CHANGES.txt|1 + NEWS.txt |2 + conf/cassandra.yaml| 15 + doc/cql3/CQL.textile | 12 +- .../examples/BNF/create_index_statement.bnf|3 +- .../cassandra/examples/CQL/create_index.cql|3 +- .../pages/developing/cql/cql_singlefile.adoc | 27 +- .../cassandra/pages/developing/cql/indexes.adoc| 29 +- .../config/CassandraRelevantProperties.java| 27 +- src/java/org/apache/cassandra/config/Config.java |9 +- .../cassandra/config/DatabaseDescriptor.java | 33 + .../config/StorageAttachedIndexOptions.java| 44 + .../cassandra/cql3/functions/types/ParseUtils.java |4 +- .../restrictions/ClusteringColumnRestrictions.java | 25 +- .../cql3/restrictions/CustomIndexExpression.java | 18 + .../cql3/restrictions/IndexRestrictions.java | 45 + .../cql3/restrictions/MultiColumnRestriction.java | 70 +- .../PartitionKeySingleRestrictionSet.java |6 +- .../cassandra/cql3/restrictions/Restriction.java | 13 +- .../cql3/restrictions/RestrictionSet.java | 41 +- .../cql3/restrictions/RestrictionSetWrapper.java | 11 +- .../cql3/restrictions/SingleColumnRestriction.java | 45 +- .../cql3/restrictions/StatementRestrictions.java | 25 +- .../cassandra/cql3/restrictions/TokenFilter.java | 11 +- .../cql3/restrictions/TokenRestriction.java|9 +- .../cassandra/cql3/statements/CQL3CasRequest.java |2 +- .../cql3/statements/ModificationStatement.java |2 +- .../cassandra/cql3/statements/SelectStatement.java | 11 +- .../statements/schema/CreateIndexStatement.java| 117 +- .../cassandra/db/CassandraTableWriteHandler.java |5 +- .../apache/cassandra/db/ClusteringComparator.java |2 + .../org/apache/cassandra/db/ColumnFamilyStore.java | 21 +- src/java/org/apache/cassandra/db/Keyspace.java |8 +- .../cassandra/db/PartitionRangeReadCommand.java| 40 +- src/java/org/apache/cassandra/db/ReadCommand.java | 93 +- .../cassandra/db/ReadExecutionController.java | 12 +- src/java/org/apache/cassandra/db/ReadQuery.java|2 +- .../org/apache/cassandra/db/SSTableImporter.java |5 + .../cassandra/db/SinglePartitionReadCommand.java | 42 +- .../cassandra/db/SinglePartitionReadQuery.java |2 +- .../org/apache/cassandra/db/TableWriteHandler.java |3 +- .../db/compaction/AbstractCompactionStrategy.java | 13 +- .../db/compaction/AbstractStr
[cassandra] 09/20: Upgrade to lucene-core 9.7.0
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit ebea2ba6ade00a6f156787ca4ee36b2f8eb003ad Author: Jonathan Ellis AuthorDate: Mon Jun 26 14:50:01 2023 -0500 Upgrade to lucene-core 9.7.0 Notes on the upgrade path: - RamIndexOutput is replaced with ResettableByteBuffersIndexOutput, an extension of ByteBuffersIndexOutput, which was the closest thing to a replacement of RamIndexOutput. - Lucene exposes the code we needed from DirectReaders more or less directly in DirectReader now, so the old copied code has been deleted. - Lucene changed its data files to be little endian, but to keep its compatibility story simple it retained BE for the header and footer ints. That's the cause of the changes in SAICodecUtils. - We could gain a bit of performance making our own code natively little endian but that is too big of a change for this patch. patch by Jonathan Ellis; reviewed by Andrés de la Peña, Caleb Rackliffe, and Mike Adamson for CASSANDRA-18494 --- .build/parent-pom-template.xml | 2 +- .../sai/disk/ResettableByteBuffersIndexOutput.java | 153 ++ .../index/sai/disk/io/IndexInputReader.java| 35 +--- .../index/sai/disk/io/IndexOutputWriter.java | 5 + .../index/sai/disk/io/RAMIndexOutput.java | 86 .../cassandra/index/sai/disk/v1/DirectReaders.java | 230 + .../index/sai/disk/v1/MetadataSource.java | 7 +- .../index/sai/disk/v1/MetadataWriter.java | 6 +- .../cassandra/index/sai/disk/v1/SAICodecUtils.java | 24 ++- .../disk/v1/bitpack/AbstractBlockPackedReader.java | 9 +- .../disk/v1/bitpack/AbstractBlockPackedWriter.java | 8 +- .../sai/disk/v1/bitpack/BlockPackedReader.java | 8 +- .../v1/bitpack/MonotonicBlockPackedReader.java | 7 +- .../sai/disk/v1/bitpack/NumericValuesMeta.java | 4 +- .../index/sai/disk/v1/postings/PostingsReader.java | 74 --- .../index/sai/disk/v1/postings/PostingsWriter.java | 25 ++- .../index/sai/disk/v1/segment/SegmentMetadata.java | 12 +- .../sai/disk/v1/sortedterms/SortedTermsMeta.java | 4 +- .../index/sai/memory/ByteSliceReader.java | 12 +- .../cassandra/index/sai/disk/v1/MetadataTest.java | 6 +- .../index/sai/disk/v1/SAICodecUtilsTest.java | 44 ++-- .../index/sai/disk/v1/TermsReaderTest.java | 2 +- 22 files changed, 302 insertions(+), 461 deletions(-) diff --git a/.build/parent-pom-template.xml b/.build/parent-pom-template.xml index 25b0ec6052..b9ca4769f4 100644 --- a/.build/parent-pom-template.xml +++ b/.build/parent-pom-template.xml @@ -1053,7 +1053,7 @@ org.apache.lucene lucene-core -7.5.0 +9.7.0 com.carrotsearch.randomizedtesting diff --git a/src/java/org/apache/cassandra/index/sai/disk/ResettableByteBuffersIndexOutput.java b/src/java/org/apache/cassandra/index/sai/disk/ResettableByteBuffersIndexOutput.java new file mode 100644 index 00..19430a5087 --- /dev/null +++ b/src/java/org/apache/cassandra/index/sai/disk/ResettableByteBuffersIndexOutput.java @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.index.sai.disk; + +import java.io.IOException; +import java.util.Map; +import java.util.Set; + +import org.apache.lucene.store.ByteBuffersDataOutput; +import org.apache.lucene.store.ByteBuffersIndexOutput; +import org.apache.lucene.store.DataInput; +import org.apache.lucene.store.IndexOutput; + +/*** + * A wrapper around {@link ByteBuffersIndexOutput} that adds several methods that interact + * with the underlying delegate. + */ +public class ResettableByteBuffersIndexOutput extends IndexOutput +{ +private final ByteBuffersIndexOutput bbio; +private final ByteBuffersDataOutput delegate; + +public ResettableByteBuffersIndexOutput(String name) +{ +//TODO CASSANDRA-18280 to investigate the initial size allocation +this(128, name); +} + +public ResettableByteBuffersIndexOutput(int
[cassandra] 06/20: post-rebase fixes for the rebase on trunk at fad1f7457032544ab6a7b40c5d38ecb8b25899bb
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit c712312b8fb0d73a3bbb42ee742fea3059dd4157 Author: Caleb Rackliffe AuthorDate: Thu Jun 1 14:43:20 2023 -0500 post-rebase fixes for the rebase on trunk at fad1f7457032544ab6a7b40c5d38ecb8b25899bb --- .../apache/cassandra/config/CassandraRelevantProperties.java | 7 ++- src/java/org/apache/cassandra/index/IndexStatusManager.java | 12 src/java/org/apache/cassandra/index/sai/QueryContext.java| 4 +++- .../cassandra/index/sai/disk/v1/SSTableIndexWriter.java | 7 +-- .../cassandra/index/sai/disk/v1/trie/TriePrefixSearcher.java | 4 ++-- src/java/org/apache/cassandra/io/tries/TrieNode.java | 2 +- src/java/org/apache/cassandra/io/tries/ValueIterator.java| 2 +- test/unit/org/apache/cassandra/index/sai/SAITester.java | 11 --- .../org/apache/cassandra/index/sai/plan/OperationTest.java | 3 ++- .../cassandra/index/sai/virtual/SegmentsSystemViewTest.java | 4 +++- test/unit/org/apache/cassandra/io/tries/WalkerTest.java | 1 - test/unit/org/apache/cassandra/io/util/SizedIntsTest.java| 1 - .../cassandra/io/util/TailOverridingRebuffererTest.java | 4 +--- 13 files changed, 36 insertions(+), 26 deletions(-) diff --git a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java index 7a0cfafc90..09c5535a2a 100644 --- a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java +++ b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java @@ -417,12 +417,15 @@ public enum CassandraRelevantProperties RING_DELAY("cassandra.ring_delay_ms"), // SAI specific properties + /** Controls the maximum number of index query intersections that will take part in a query */ SAI_INTERSECTION_CLAUSE_LIMIT("cassandra.sai.intersection.clause.limit", "2"), /** Latest version to be used for SAI index writing */ SAI_LATEST_VERSION("cassandra.sai.latest_version", "aa"), +SAI_MAX_FROZEN_TERM_SIZE("cassandra.sai.max_frozen_term_size_kb", "5"), +SAI_MAX_STRING_TERM_SIZE("cassandra.sai.max_string_term_size_kb", "1"), +SAI_TEST_DISABLE_TIMEOUT("cassandra.sai.test.disable.timeout", "false"), -/** Defines how often schema definitions are pulled from the other nodes */ SCHEMA_PULL_INTERVAL_MS("cassandra.schema_pull_interval_ms", "6"), SCHEMA_UPDATE_HANDLER_FACTORY_CLASS("cassandra.schema.update_handler_factory.class"), SEARCH_CONCURRENCY_FACTOR("cassandra.search_concurrency_factor", "1"), @@ -487,6 +490,7 @@ public enum CassandraRelevantProperties TEST_DEBUG_REF_COUNT("cassandra.debugrefcount"), TEST_DRIVER_CONNECTION_TIMEOUT_MS("cassandra.test.driver.connection_timeout_ms", "5000"), TEST_DRIVER_READ_TIMEOUT_MS("cassandra.test.driver.read_timeout_ms", "12000"), +TEST_ENCRYPTION("cassandra.test.encryption", "false"), TEST_FAIL_MV_LOCKS_COUNT("cassandra.test.fail_mv_locks_count", "0"), TEST_FAIL_WRITES_KS("cassandra.test.fail_writes_ks", ""), /** Flush changes of {@link org.apache.cassandra.schema.SchemaKeyspace} after each schema modification. In production, @@ -499,6 +503,7 @@ public enum CassandraRelevantProperties TEST_JVM_DTEST_DISABLE_SSL("cassandra.test.disable_ssl"), TEST_LEGACY_SSTABLE_ROOT("legacy-sstable-root"), TEST_ORG_CAFFINITAS_OHC_SEGMENTCOUNT("org.caffinitas.ohc.segmentCount"), +TEST_RANDOM_SEED("cassandra.test.random.seed"), TEST_READ_ITERATION_DELAY_MS("cassandra.test.read_iteration_delay_ms", "0"), TEST_REUSE_PREPARED("cassandra.test.reuse_prepared", "true"), TEST_ROW_CACHE_SIZE("cassandra.test.row_cache_size"), diff --git a/src/java/org/apache/cassandra/index/IndexStatusManager.java b/src/java/org/apache/cassandra/index/IndexStatusManager.java index ae1abf18d8..13a51831f9 100644 --- a/src/java/org/apache/cassandra/index/IndexStatusManager.java +++ b/src/java/org/apache/cassandra/index/IndexStatusManager.java @@ -31,7 +31,6 @@ import com.google.common.annotations.VisibleForTesting; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.cassandra.concurrent.ExecutorPlus; import org.apache.cassandra.db.ConsistencyLevel; import org.apache.cassandra.db.Keyspace; @@ -52,9 +51,9 @@ import static org.apache.cassandra.concurrent.ExecutorFactory.Global.executorFac /** * Handles the s
[cassandra] 14/20: Add basic text analysis to SAI, including "case_sensitive", "normalize", and "ascii" modes
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit eb208d3561eaf645f74f60b54c71ebe5bfc24c33 Author: Mike Adamson AuthorDate: Tue May 9 12:29:01 2023 +0100 Add basic text analysis to SAI, including "case_sensitive", "normalize", and "ascii" modes patch by Mike Adamson; reviewed by Caleb Rackliffe and Andres de la Peña for CASSANDRA-18479 --- .build/cassandra-deps-template.xml | 8 +- .build/parent-pom-template.xml | 10 +- .../apache/cassandra/index/sai/IndexContext.java | 31 ++-- .../cassandra/index/sai/StorageAttachedIndex.java | 6 +- .../index/sai/analyzer/AbstractAnalyzer.java | 26 .../index/sai/analyzer/NonTokenizingAnalyzer.java | 147 +++ .../index/sai/analyzer/NonTokenizingOptions.java | 156 + .../index/sai/analyzer/filter/BasicFilters.java| 82 +++ .../index/sai/analyzer/filter/FilterPipeline.java | 69 + .../analyzer/filter/FilterPipelineExecutor.java| 40 ++ .../index/sai/disk/v1/SSTableIndexWriter.java | 2 +- .../index/sai/memory/TrieMemoryIndex.java | 2 +- .../cassandra/index/sai/plan/Expression.java | 2 +- .../apache/cassandra/index/sai/plan/Operation.java | 2 +- .../sai/plan/StorageAttachedIndexSearcher.java | 2 +- .../index/sai/virtual/ColumnIndexesSystemView.java | 2 +- .../index/sasi/analyzer/filter/StemmerFactory.java | 55 +--- .../test/sai/ReplicaFilteringProtectionTest.java | 67 + .../sai/analyzer/NonTokenizingAnalyzerTest.java| 75 ++ .../sai/analyzer/filter/BasicFiltersTest.java | 73 ++ .../index/sai/cql/StorageAttachedIndexDDLTest.java | 106 ++ .../index/sai/virtual/IndexesSystemViewTest.java | 2 +- 22 files changed, 904 insertions(+), 61 deletions(-) diff --git a/.build/cassandra-deps-template.xml b/.build/cassandra-deps-template.xml index 0185e8fbbf..5e3ebc0e58 100644 --- a/.build/cassandra-deps-template.xml +++ b/.build/cassandra-deps-template.xml @@ -324,10 +324,6 @@ org.hdrhistogram HdrHistogram - - com.github.rholder - snowball-stemmer - com.googlecode.concurrent-trees concurrent-trees @@ -376,5 +372,9 @@ org.apache.lucene lucene-core + + org.apache.lucene + lucene-analysis-common + diff --git a/.build/parent-pom-template.xml b/.build/parent-pom-template.xml index b9ca4769f4..50695a348d 100644 --- a/.build/parent-pom-template.xml +++ b/.build/parent-pom-template.xml @@ -882,11 +882,6 @@ - -com.github.rholder -snowball-stemmer -1.3.0.581.1 - com.googlecode.concurrent-trees concurrent-trees @@ -1055,6 +1050,11 @@ lucene-core 9.7.0 + +org.apache.lucene +lucene-analysis-common +9.7.0 + com.carrotsearch.randomizedtesting randomizedtesting-runner diff --git a/src/java/org/apache/cassandra/index/sai/IndexContext.java b/src/java/org/apache/cassandra/index/sai/IndexContext.java index 14a6db6c4b..d0a5e08b16 100644 --- a/src/java/org/apache/cassandra/index/sai/IndexContext.java +++ b/src/java/org/apache/cassandra/index/sai/IndexContext.java @@ -90,8 +90,7 @@ public class IndexContext private final IndexViewManager viewManager; private final IndexMetrics indexMetrics; private final ColumnQueryMetrics columnQueryMetrics; -private final AbstractAnalyzer.AnalyzerFactory indexAnalyzerFactory; -private final AbstractAnalyzer.AnalyzerFactory queryAnalyzerFactory; +private final AbstractAnalyzer.AnalyzerFactory analyzerFactory; private final PrimaryKey.Factory primaryKeyFactory; public IndexContext(String keyspace, @@ -119,9 +118,8 @@ public class IndexContext this.columnQueryMetrics = isLiteral() ? new ColumnQueryMetrics.TrieIndexMetrics(this) : new ColumnQueryMetrics.BalancedTreeIndexMetrics(this); -// We currently only support the NoOpAnalyzer -this.indexAnalyzerFactory = AbstractAnalyzer.fromOptions(getValidator(), Collections.emptyMap()); -this.queryAnalyzerFactory = AbstractAnalyzer.fromOptions(getValidator(), Collections.emptyMap()); +this.analyzerFactory = indexMetadata == null ? AbstractAnalyzer.fromOptions(getValidator(), Collections.emptyMap()) + : AbstractAnalyzer.fromOptions(getValidator(), indexMetadata.options); } public AbstractType keyValidator() @@ -199,23 +197,12 @@ public class IndexContext } /** - * Returns an {@code AnalyzerFactory} for use by the write path to transform i
[cassandra] 19/20: Importer should build SSTable indexes successfully before making new SSTables readable
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 83203a14c400ff99cfb2a5b7e655a663ea882c2b Author: Caleb Rackliffe AuthorDate: Fri Jul 14 01:44:26 2023 -0700 Importer should build SSTable indexes successfully before making new SSTables readable - Avoid validation in response to SSTableAddedNotification, as it should already have been done somewhere else - Change SSTableWriter to prevent commit when a failure is thrown out of an index build patch by Caleb Rackliffe; reviewed by Mike Adamson and Andres de la Peña for CASSANDRA-18670 --- .../cassandra/config/DatabaseDescriptor.java | 6 + .../org/apache/cassandra/db/SSTableImporter.java | 5 + .../db/streaming/CassandraIncomingFile.java| 8 + .../db/streaming/CassandraStreamReceiver.java | 16 +- src/java/org/apache/cassandra/index/Index.java | 38 ++- .../org/apache/cassandra/index/IndexRegistry.java | 8 +- .../cassandra/index/SecondaryIndexManager.java | 111 +++- .../apache/cassandra/index/sai/IndexContext.java | 1 - .../cassandra/index/sai/SSTableContextManager.java | 1 - .../cassandra/index/sai/StorageAttachedIndex.java | 6 + .../index/sai/StorageAttachedIndexBuilder.java | 8 +- .../index/sai/StorageAttachedIndexGroup.java | 42 ++- .../index/sai/disk/StorageAttachedIndexWriter.java | 24 +- .../index/sai/disk/format/IndexDescriptor.java | 42 ++- .../index/sai/disk/format/OnDiskFormat.java| 11 +- .../index/sai/disk/v1/V1OnDiskFormat.java | 51 ++-- .../org/apache/cassandra/index/sasi/SASIIndex.java | 1 + .../cassandra/io/sstable/format/SSTableWriter.java | 11 +- .../test/sai/ImportIndexedSSTablesTest.java| 283 + .../test/sai/IndexStreamingFailureTest.java| 199 +++ .../org/apache/cassandra/index/sai/SAITester.java | 2 +- .../index/sai/cql/StorageAttachedIndexDDLTest.java | 31 ++- .../sai/metrics/SegmentFlushingFailureTester.java | 34 ++- 23 files changed, 826 insertions(+), 113 deletions(-) diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index f288baefbf..4e5a26fafc 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -3552,6 +3552,12 @@ public class DatabaseDescriptor return conf.stream_entire_sstables; } +@VisibleForTesting +public static boolean setStreamEntireSSTables(boolean value) +{ +return conf.stream_entire_sstables = value; +} + public static DurationSpec.LongMillisecondsBound getStreamTransferTaskTimeout() { return conf.stream_transfer_task_timeout; diff --git a/src/java/org/apache/cassandra/db/SSTableImporter.java b/src/java/org/apache/cassandra/db/SSTableImporter.java index b7cf3b7718..c2544f7d06 100644 --- a/src/java/org/apache/cassandra/db/SSTableImporter.java +++ b/src/java/org/apache/cassandra/db/SSTableImporter.java @@ -186,6 +186,11 @@ public class SSTableImporter try (Refs refs = Refs.ref(newSSTables)) { abortIfDraining(); + +// Validate existing SSTable-attached indexes, and then build any that are missing: +if (!cfs.indexManager.validateSSTableAttachedIndexes(newSSTables, false)) + cfs.indexManager.buildSSTableAttachedIndexesBlocking(newSSTables); + cfs.getTracker().addSSTables(newSSTables); for (SSTableReader reader : newSSTables) { diff --git a/src/java/org/apache/cassandra/db/streaming/CassandraIncomingFile.java b/src/java/org/apache/cassandra/db/streaming/CassandraIncomingFile.java index 3e87d67fef..e8a6fbcc7c 100644 --- a/src/java/org/apache/cassandra/db/streaming/CassandraIncomingFile.java +++ b/src/java/org/apache/cassandra/db/streaming/CassandraIncomingFile.java @@ -47,6 +47,8 @@ public class CassandraIncomingFile implements IncomingStream private volatile long size = -1; private volatile int numFiles = 1; +private volatile boolean isEntireSSTable = false; + private static final Logger logger = LoggerFactory.getLogger(CassandraIncomingFile.class); public CassandraIncomingFile(ColumnFamilyStore cfs, StreamSession session, StreamMessageHeader header) @@ -72,6 +74,7 @@ public class CassandraIncomingFile implements IncomingStream IStreamReader reader; if (streamHeader.isEntireSSTable) { +isEntireSSTable = true; reader = new CassandraEntireSSTableStreamReader(header, streamHeader, session); numFiles = streamHeader.componentManifest.components().size(); } @@ -103,6 +106,11 @@ public class CassandraIncomingFile implements IncomingStream return
[cassandra] 13/20: Query all ranges at once for SAI distributed queries
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit cba3e19ccd81d705ca9f89c0eedab65824e9dd16 Author: Mike Adamson AuthorDate: Wed May 10 15:05:15 2023 +0100 Query all ranges at once for SAI distributed queries patch by Mike Adamson; reviewed by Caleb Rackliffe, Andres de la Peña, and Berenguer Blasi for CASSANDRA-18515 --- .../service/reads/range/RangeCommands.java | 31 +++-- .../test/sai/ConcurrencyFactorTest.java| 133 + 2 files changed, 154 insertions(+), 10 deletions(-) diff --git a/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java b/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java index 865b03d487..ca1ceebe76 100644 --- a/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java +++ b/src/java/org/apache/cassandra/service/reads/range/RangeCommands.java @@ -79,19 +79,30 @@ public class RangeCommands keyspace, consistencyLevel); -// our estimate of how many result rows there will be per-range -float resultsPerRange = estimateResultsPerRange(command, keyspace); -// underestimate how many rows we will get per-range in order to increase the likelihood that we'll -// fetch enough rows in the first round -resultsPerRange -= resultsPerRange * CONCURRENT_SUBREQUESTS_MARGIN; int maxConcurrencyFactor = Math.min(replicaPlans.size(), MAX_CONCURRENT_RANGE_REQUESTS); -int concurrencyFactor = resultsPerRange == 0.0 +int concurrencyFactor = maxConcurrencyFactor; +Index.QueryPlan queryPlan = command.indexQueryPlan(); +if (queryPlan == null || queryPlan.shouldEstimateInitialConcurrency()) +{ +// our estimate of how many result rows there will be per-range +float resultsPerRange = estimateResultsPerRange(command, keyspace); +// underestimate how many rows we will get per-range in order to increase the likelihood that we'll +// fetch enough rows in the first round +resultsPerRange -= resultsPerRange * CONCURRENT_SUBREQUESTS_MARGIN; +concurrencyFactor = resultsPerRange == 0.0 ? 1 : Math.max(1, Math.min(maxConcurrencyFactor, (int) Math.ceil(command.limits().count() / resultsPerRange))); -logger.trace("Estimated result rows per range: {}; requested rows: {}, ranges.size(): {}; concurrent range requests: {}", - resultsPerRange, command.limits().count(), replicaPlans.size(), concurrencyFactor); -Tracing.trace("Submitting range requests on {} ranges with a concurrency of {} ({} rows per range expected)", - replicaPlans.size(), concurrencyFactor, resultsPerRange); +logger.trace("Estimated result rows per range: {}; requested rows: {}, ranges.size(): {}; concurrent range requests: {}", + resultsPerRange, command.limits().count(), replicaPlans.size(), concurrencyFactor); +Tracing.trace("Submitting range requests on {} ranges with a concurrency of {} ({} rows per range expected)", + replicaPlans.size(), concurrencyFactor, resultsPerRange); +} +else +{ +logger.trace("Max concurrent range requests: {}; requested rows: {}, ranges.size(): {}; concurrent range requests: {}", + MAX_CONCURRENT_RANGE_REQUESTS, command.limits().count(), replicaPlans.size(), concurrencyFactor); +Tracing.trace("Submitting range requests on {} ranges with a concurrency of {}", replicaPlans.size(), concurrencyFactor); +} ReplicaPlanMerger mergedReplicaPlans = new ReplicaPlanMerger(replicaPlans, keyspace, consistencyLevel); return new RangeCommandIterator(mergedReplicaPlans, diff --git a/test/distributed/org/apache/cassandra/distributed/test/sai/ConcurrencyFactorTest.java b/test/distributed/org/apache/cassandra/distributed/test/sai/ConcurrencyFactorTest.java new file mode 100644 index 00..6c39591c2f --- /dev/null +++ b/test/distributed/org/apache/cassandra/distributed/test/sai/ConcurrencyFactorTest.java @@ -0,0 +1,133 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of
[cassandra] 10/20: Stream all compatible components registered by an SSTable
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 98fefc1557efa7123bab19eb5f74f04964aa02c1 Author: Piotr Kołaczkowski AuthorDate: Thu Jun 15 15:07:18 2023 +0200 Stream all compatible components registered by an SSTable patch by Piotr Kołaczkowski; reviewed by Andrés de la Peña and Caleb Rackliffe for CASSANDRA-18345 --- .../CassandraEntireSSTableStreamReader.java| 2 +- .../db/streaming/CassandraOutgoingFile.java| 4 +- .../cassandra/db/streaming/ComponentContext.java | 6 +- .../cassandra/db/streaming/ComponentManifest.java | 12 +- .../index/sai/disk/format/IndexComponent.java | 18 +++ .../cassandra/index/sai/disk/format/Version.java | 9 +- .../index/sai/disk/v1/V1OnDiskFormat.java | 14 +- .../org/apache/cassandra/io/sstable/Component.java | 26 ++-- .../org/apache/cassandra/io/sstable/SSTable.java | 11 ++ .../io/sstable/SSTableZeroCopyWriter.java | 26 ++-- .../org/apache/cassandra/io/sstable/SSTable_API.md | 14 +- .../cassandra/io/sstable/format/SSTableFormat.java | 19 ++- .../cassandra/io/sstable/format/big/BigFormat.java | 20 +-- .../cassandra/io/sstable/format/bti/BtiFormat.java | 19 +-- .../distributed/test/sai/IndexStreamingTest.java | 155 + .../microbench/ZeroCopyStreamingBenchmark.java | 2 +- .../CassandraEntireSSTableStreamWriterTest.java| 4 +- .../db/streaming/CassandraStreamHeaderTest.java| 4 +- .../apache/cassandra/io/sstable/ComponentTest.java | 20 +-- .../io/sstable/SSTableZeroCopyWriterTest.java | 2 +- ...ntireSSTableStreamingCorrectFilesCountTest.java | 2 +- 21 files changed, 278 insertions(+), 111 deletions(-) diff --git a/src/java/org/apache/cassandra/db/streaming/CassandraEntireSSTableStreamReader.java b/src/java/org/apache/cassandra/db/streaming/CassandraEntireSSTableStreamReader.java index 9c5e048a12..98e2b6f7ef 100644 --- a/src/java/org/apache/cassandra/db/streaming/CassandraEntireSSTableStreamReader.java +++ b/src/java/org/apache/cassandra/db/streaming/CassandraEntireSSTableStreamReader.java @@ -121,7 +121,7 @@ public class CassandraEntireSSTableStreamReader implements IStreamReader prettyPrintMemory(bytesRead), prettyPrintMemory(totalSize)); -writer.writeComponent(component.type, in, length); +writer.writeComponent(component, in, length); session.progress(writer.descriptor.fileFor(component).toString(), ProgressInfo.Direction.IN, length, length, length); bytesRead += length; diff --git a/src/java/org/apache/cassandra/db/streaming/CassandraOutgoingFile.java b/src/java/org/apache/cassandra/db/streaming/CassandraOutgoingFile.java index 73abbe8846..7572749d37 100644 --- a/src/java/org/apache/cassandra/db/streaming/CassandraOutgoingFile.java +++ b/src/java/org/apache/cassandra/db/streaming/CassandraOutgoingFile.java @@ -65,7 +65,7 @@ public class CassandraOutgoingFile implements OutgoingStream this.filename = sstable.getFilename(); this.shouldStreamEntireSSTable = computeShouldStreamEntireSSTables(); -ComponentManifest manifest = ComponentManifest.create(sstable.descriptor); +ComponentManifest manifest = ComponentManifest.create(sstable); this.header = makeHeader(sstable, operation, sections, estimatedKeys, shouldStreamEntireSSTable, manifest); } @@ -154,7 +154,7 @@ public class CassandraOutgoingFile implements OutgoingStream // redistribution, otherwise file sizes recorded in component manifest will be different from actual // file sizes. // Recreate the latest manifest and hard links for mutatable components in case they are modified. -try (ComponentContext context = sstable.runWithLock(ignored -> ComponentContext.create(sstable.descriptor))) +try (ComponentContext context = sstable.runWithLock(ignored -> ComponentContext.create(sstable))) { CassandraStreamHeader current = makeHeader(sstable, operation, sections, estimatedKeys, true, context.manifest()); CassandraStreamHeader.serializer.serialize(current, out, version); diff --git a/src/java/org/apache/cassandra/db/streaming/ComponentContext.java b/src/java/org/apache/cassandra/db/streaming/ComponentContext.java index 164dd6ba5c..c03e7b4c34 100644 --- a/src/java/org/apache/cassandra/db/streaming/ComponentContext.java +++ b/src/java/org/apache/cassandra/db/streaming/ComponentContext.java @@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.io.sstable.Component; import org.apache.cassandra.io.sstable.Descriptor; +import org.apache.cassandra.io.sstable.SSTable; import org.apache.cassandra.io.util.File;
[cassandra] 16/20: Fix KeyRangeIntersectionIterator count
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit b57181032d39cb16ee1c0968b5c4d6f79fa2e2d3 Author: Jonathan Ellis AuthorDate: Mon Jul 17 14:23:09 2023 +0200 Fix KeyRangeIntersectionIterator count patch by Jonathan Ellis; reviewed by Andrés de la Peña --- .../iterators/KeyRangeIntersectionIterator.java| 12 ++- .../index/sai/iterators/KeyRangeIterator.java | 23 -- .../KeyRangeIntersectionIteratorTest.java | 6 +++--- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIntersectionIterator.java b/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIntersectionIterator.java index f5bca7948b..63f273a2a5 100644 --- a/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIntersectionIterator.java +++ b/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIntersectionIterator.java @@ -249,6 +249,8 @@ public class KeyRangeIntersectionIterator extends KeyRangeIterator private static class IntersectionStatistics extends KeyRangeIterator.Builder.Statistics { +private boolean empty = true; + @Override public void update(KeyRangeIterator range) { @@ -256,7 +258,15 @@ public class KeyRangeIntersectionIterator extends KeyRangeIterator min = nullSafeMax(min, range.getMinimum()); // maximum of the intersection is the smallest maximum of individual iterators max = nullSafeMin(max, range.getMaximum()); -count += range.getCount(); +if (empty) +{ +empty = false; +count = range.getCount(); +} +else +{ +count = Math.min(count, range.getCount()); +} } } diff --git a/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIterator.java b/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIterator.java index f8bd38291b..84bf36bd59 100644 --- a/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIterator.java +++ b/src/java/org/apache/cassandra/index/sai/iterators/KeyRangeIterator.java @@ -18,10 +18,10 @@ package org.apache.cassandra.index.sai.iterators; import java.io.Closeable; -import java.util.List; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; +import com.google.common.collect.Iterables; import org.apache.cassandra.index.sai.utils.PrimaryKey; import org.apache.cassandra.utils.AbstractGuavaIterator; @@ -29,6 +29,8 @@ import org.apache.cassandra.utils.AbstractGuavaIterator; /** * An abstract implementation of {@link AbstractGuavaIterator} that supports the building and management of * concatanation, union and intersection iterators. + * + * Only certain methods are designed to be overriden. The others are marked private or final. */ public abstract class KeyRangeIterator extends AbstractGuavaIterator implements Closeable { @@ -81,7 +83,8 @@ public abstract class KeyRangeIterator extends AbstractGuavaIterator * * @param nextKey value to skip the iterator forward until matching * - * @return The next current key after the skip was performed + * @return The key skipped to, which will be the key returned by the + * next call to {@link #next()}, i.e., we are "peeking" at the next key as part of the skip. */ public final PrimaryKey skipTo(PrimaryKey nextKey) { @@ -106,14 +109,22 @@ public abstract class KeyRangeIterator extends AbstractGuavaIterator return recomputeNext(); } +/** + * Skip to nextKey. + * + * That is, implementations should set up the iterator state such that + * calling computeNext() will return nextKey if present, + * or the first one after it if not present. + */ protected abstract void performSkipTo(PrimaryKey nextKey); -protected PrimaryKey recomputeNext() +private PrimaryKey recomputeNext() { return tryToComputeNext() ? peek() : endOfData(); } -protected boolean tryToComputeNext() +@Override +protected final boolean tryToComputeNext() { boolean hasNext = super.tryToComputeNext(); current = hasNext ? next : getMaximum(); @@ -159,9 +170,9 @@ public abstract class KeyRangeIterator extends AbstractGuavaIterator return statistics.count; } -public Builder add(List ranges) +public Builder add(Iterable ranges) { -if (ranges == null || ranges.isEmpty()) +if (ranges == null || Iterables.isEmpty(ranges)) return this; ranges.forEach(this::add); diff --git a/test/unit/org/apache/cassandra/index/sai/iterators/KeyRangeIntersectionIteratorTes
[cassandra] 17/20: Add support for index implementation selection via USING for CREATE INDEX
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 394d4b116868e4897ad3cc40833df801366a8916 Author: Caleb Rackliffe AuthorDate: Wed Jun 21 17:29:05 2023 -0500 Add support for index implementation selection via USING for CREATE INDEX patch by Caleb Rackliffe; reviewed by Maxwell Guo and Andres de la Peña for CASSANDRA-18615 --- conf/cassandra.yaml| 9 ++ doc/cql3/CQL.textile | 12 +- .../examples/BNF/create_index_statement.bnf| 3 +- .../cassandra/examples/CQL/create_index.cql| 3 +- .../pages/developing/cql/cql_singlefile.adoc | 27 +++-- .../cassandra/pages/developing/cql/indexes.adoc| 29 +++-- src/java/org/apache/cassandra/config/Config.java | 7 +- .../cassandra/config/DatabaseDescriptor.java | 20 .../statements/schema/CreateIndexStatement.java| 23 .../cassandra/index/internal/CassandraIndex.java | 2 + src/java/org/apache/cassandra/index/sai/README.md | 4 +- .../cassandra/index/sai/StorageAttachedIndex.java | 2 + .../org/apache/cassandra/schema/IndexMetadata.java | 5 +- .../validation/entities/SecondaryIndexTest.java| 46 .../org/apache/cassandra/index/sai/SAITester.java | 2 +- .../index/sai/cql/CollectionIndexingTest.java | 53 + .../sai/cql/CompositePartitionKeyIndexTest.java| 12 +- .../index/sai/cql/MultipleColumnIndexTest.java | 20 ++-- .../index/sai/cql/StorageAttachedIndexDDLTest.java | 124 ++--- .../index/sai/cql/types/IndexingTypeSupport.java | 6 +- .../index/sai/functional/GroupComponentsTest.java | 6 +- .../index/sai/virtual/SSTablesSystemViewTest.java | 4 +- 22 files changed, 305 insertions(+), 114 deletions(-) diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index 9e79d3525b..a9d0ddadbc 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -1975,6 +1975,15 @@ drop_compact_storage_enabled: false # if zero_ttl_on_twcs_enabled is set to false, this property is irrelevant as such statements will fail. #zero_ttl_on_twcs_warned: true +# The default secondary index implementation when CREATE INDEX does not specify one via USING. +# ex. "legacy_local_table" - (default) legacy secondary index, implemented as a hidden table +# ex. "sai" - "storage-attched" index, implemented via optimized SSTable/Memtable-attached indexes +#default_secondary_index: legacy_local_table + +# Whether a default secondary index implementation is allowed. If this is "false", CREATE INDEX must +# specify an index implementation via USING. +#default_secondary_index_enabled: true + # Startup Checks are executed as part of Cassandra startup process, not all of them # are configurable (so you can disable them) but these which are enumerated bellow. # Uncomment the startup checks and configure them appropriately to cover your needs. diff --git a/doc/cql3/CQL.textile b/doc/cql3/CQL.textile index 0073ff7ed3..4f6a4d7338 100644 --- a/doc/cql3/CQL.textile +++ b/doc/cql3/CQL.textile @@ -513,7 +513,8 @@ __Sample:__ bc(sample). CREATE INDEX userIndex ON NerdMovies (user); CREATE INDEX ON Mutants (abilityId); -CREATE INDEX ON users (keys(favs)); +CREATE INDEX ON users (KEYS(favs)); +CREATE INDEX ON users (age) USING 'sai'; CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass'; CREATE CUSTOM INDEX ON users (email) USING 'path.to.the.IndexClass' WITH OPTIONS = {'storage': '/mnt/ssd/indexes/'}; @@ -521,6 +522,15 @@ The @CREATE INDEX@ statement is used to create a new (automatic) secondary index Attempting to create an already existing index will return an error unless the @IF NOT EXISTS@ option is used. If it is used, the statement will be a no-op if the index already exists. +h4(#usingIndex). Index Types + +The @USING@ keyword optionally specifies an index type. There are two built-in types: + +* legacy_local_table - (default) legacy secondary index, implemented as a hidden local table +* sai - "storage-attched" index, implemented via optimized SSTable/Memtable-attached indexes + +To create a custom index, a fully qualified class name must be specified. + h4(#keysIndex). Indexes on Map Keys When creating an index on a "map column":#map, you may index either the keys or the values. If the column identifier is placed within the @keys()@ function, the index will be on the map keys, allowing you to use @CONTAINS KEY@ in @WHERE@ clauses. Otherwise, the index will be on the map values. diff --git a/doc/modules/cassandra/examples/BNF/create_index_statement.bnf b/doc/modules/cassandra/examples/BNF/create_index_statement.bnf index 6e76947243..322799de1c 100644 --- a/doc/modules/cassandra/examples/BNF/create_index_statement.bnf +++ b/doc/modules/ca
[cassandra] 20/20: minor fixes after rebase on trunk at c1bf002234bd44bce120658e9b08b3d67901e5bb
This is an automated email from the ASF dual-hosted git repository. maedhroz pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git commit 94964b54b6b01b7cb4587de1822b5cced3c22352 Author: Caleb Rackliffe AuthorDate: Tue Jul 25 16:35:32 2023 -0500 minor fixes after rebase on trunk at c1bf002234bd44bce120658e9b08b3d67901e5bb --- .../org/apache/cassandra/db/PartitionRangeReadCommand.java | 2 +- .../cassandra/db/compaction/UnifiedCompactionStrategy.java | 4 ++-- .../cassandra/db/compaction/unified/ShardedMultiWriter.java | 12 ++-- .../org/apache/cassandra/index/sai/disk/SSTableIndex.java| 6 +++--- .../apache/cassandra/index/sai/plan/QueryViewBuilder.java| 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java b/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java index ea19efef13..7cca335c4c 100644 --- a/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java +++ b/src/java/org/apache/cassandra/db/PartitionRangeReadCommand.java @@ -530,7 +530,7 @@ public class PartitionRangeReadCommand extends ReadCommand implements PartitionR throws IOException { DataRange range = DataRange.serializer.deserialize(in, version, metadata); -return new PartitionRangeReadCommand(isDigest, digestVersion, acceptsTransient, metadata, nowInSec, columnFilter, rowFilter, limits, range, indexQueryPlan, false); +return PartitionRangeReadCommand.create(isDigest, digestVersion, acceptsTransient, metadata, nowInSec, columnFilter, rowFilter, limits, range, indexQueryPlan, false); } } diff --git a/src/java/org/apache/cassandra/db/compaction/UnifiedCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/UnifiedCompactionStrategy.java index 95e901b7b8..c410bf1e1b 100644 --- a/src/java/org/apache/cassandra/db/compaction/UnifiedCompactionStrategy.java +++ b/src/java/org/apache/cassandra/db/compaction/UnifiedCompactionStrategy.java @@ -267,7 +267,7 @@ public class UnifiedCompactionStrategy extends AbstractCompactionStrategy IntervalSet commitLogPositions, int sstableLevel, SerializationHeader header, - Collection indexes, + Collection indexGroups, LifecycleNewTracker lifecycleNewTracker) { ShardManager shardManager = getShardManager(); @@ -281,7 +281,7 @@ public class UnifiedCompactionStrategy extends AbstractCompactionStrategy isTransient, commitLogPositions, header, - indexes, + indexGroups, lifecycleNewTracker, boundaries); } diff --git a/src/java/org/apache/cassandra/db/compaction/unified/ShardedMultiWriter.java b/src/java/org/apache/cassandra/db/compaction/unified/ShardedMultiWriter.java index 1fff50ad8c..58ce924c12 100644 --- a/src/java/org/apache/cassandra/db/compaction/unified/ShardedMultiWriter.java +++ b/src/java/org/apache/cassandra/db/compaction/unified/ShardedMultiWriter.java @@ -63,7 +63,7 @@ public class ShardedMultiWriter implements SSTableMultiWriter private final boolean isTransient; private final IntervalSet commitLogPositions; private final SerializationHeader header; -private final Collection indexes; +private final Collection indexGroups; private final LifecycleNewTracker lifecycleNewTracker; private final ShardTracker boundaries; private final SSTableWriter[] writers; @@ -77,7 +77,7 @@ public class ShardedMultiWriter implements SSTableMultiWriter boolean isTransient, IntervalSet commitLogPositions, SerializationHeader header, - Collection indexes, + Collection indexGroups, LifecycleNewTracker lifecycleNewTracker, ShardTracker boundaries) { @@ -89,7 +89,7 @@ public class ShardedMultiWriter implements SSTableMultiWriter this.isTransient = isTransient; this.commitLogPositions = commitLogPositions; this.header = header; -this.indexes = indexes; +this.indexGroups = indexGroups; this.lifecycleNewTracker = lifecycleNewTracker; this.boundaries = boundaries; this.writers = new SSTableWriter[this.boundaries.count