(cassandra) 13/16: Accord: NPE in RangeDeps.forEach

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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)

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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

2024-05-10 Thread maedhroz
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)

2024-05-10 Thread maedhroz
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)

2024-05-02 Thread maedhroz
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

2024-05-02 Thread maedhroz
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

2024-05-02 Thread maedhroz
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

2024-05-01 Thread maedhroz
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)

2024-05-01 Thread maedhroz
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)

2024-05-01 Thread maedhroz
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

2024-05-01 Thread maedhroz
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

2024-05-01 Thread maedhroz
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

2024-04-30 Thread maedhroz
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

2024-04-17 Thread maedhroz
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)

2024-04-17 Thread maedhroz
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

2024-04-17 Thread maedhroz
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)

2024-04-08 Thread maedhroz
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

2024-04-08 Thread maedhroz
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

2024-04-08 Thread maedhroz
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)

2024-04-08 Thread maedhroz
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

2024-04-08 Thread maedhroz
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)

2024-04-08 Thread maedhroz
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

2024-04-08 Thread maedhroz
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)

2024-04-03 Thread maedhroz
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

2024-04-03 Thread maedhroz
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

2024-04-03 Thread maedhroz
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)

2024-03-22 Thread maedhroz
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

2024-03-22 Thread maedhroz
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

2024-03-22 Thread maedhroz
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

2024-03-19 Thread maedhroz
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)

2024-03-19 Thread maedhroz
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

2024-03-19 Thread maedhroz
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)

2024-03-07 Thread maedhroz
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

2024-03-07 Thread maedhroz
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

2024-03-07 Thread maedhroz
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

2024-03-01 Thread maedhroz
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

2024-02-29 Thread maedhroz
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)

2024-02-29 Thread maedhroz
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)

2024-02-26 Thread maedhroz
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

2024-02-26 Thread maedhroz
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

2024-02-26 Thread maedhroz
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)

2024-01-29 Thread maedhroz
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

2024-01-29 Thread maedhroz
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

2024-01-29 Thread maedhroz
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)

2024-01-16 Thread maedhroz
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)

2024-01-12 Thread maedhroz
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

2024-01-12 Thread maedhroz
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

2024-01-09 Thread maedhroz
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)

2024-01-09 Thread maedhroz
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)

2024-01-09 Thread maedhroz
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

2024-01-09 Thread maedhroz
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)

2024-01-09 Thread maedhroz
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

2024-01-09 Thread maedhroz
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

2024-01-09 Thread maedhroz
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)

2023-10-30 Thread maedhroz
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

2023-10-30 Thread maedhroz
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

2023-10-30 Thread maedhroz
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)

2023-10-20 Thread maedhroz
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

2023-10-20 Thread maedhroz
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

2023-10-20 Thread maedhroz
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

2023-10-18 Thread maedhroz
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

2023-10-18 Thread maedhroz
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)

2023-10-18 Thread maedhroz
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

2023-10-03 Thread maedhroz
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

2023-10-03 Thread maedhroz
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

2023-10-03 Thread maedhroz
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)

2023-10-03 Thread maedhroz
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

2023-09-20 Thread maedhroz
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)

2023-08-18 Thread maedhroz
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

2023-08-18 Thread maedhroz
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)

2023-08-11 Thread maedhroz
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

2023-08-11 Thread maedhroz
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

2023-08-11 Thread maedhroz
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

2023-08-02 Thread maedhroz
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

2023-07-27 Thread maedhroz
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)

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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)

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

2023-07-26 Thread maedhroz
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

  1   2   3   4   >