This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch cassandra-6.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-6.0 by this push:
     new 9017e18fa1 Allocation improvements in ProtocolVersion, StorageProxy 
and MerkleTree
9017e18fa1 is described below

commit 9017e18fa1223b3638064bb832da62f3cb32c74a
Author: Matt Byrd <[email protected]>
AuthorDate: Wed Mar 4 19:47:19 2026 +0000

    Allocation improvements in ProtocolVersion, StorageProxy and MerkleTree
    
    Patch by Matt Byrd; reviewed by Dmitry Konstantinov and marcuse for 
CASSANDRA-21199
---
 CHANGES.txt                                                  |  1 +
 src/java/org/apache/cassandra/service/StorageProxy.java      |  7 +++++--
 src/java/org/apache/cassandra/transport/ProtocolVersion.java | 10 +++++-----
 src/java/org/apache/cassandra/utils/MerkleTree.java          |  2 +-
 4 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 628ba1f48f..b03e6d6627 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 6.0-alpha2
+ * Allocation improvements in ProtocolVersion, StorageProxy and MerkleTree 
(CASSANDRA-21199)
  * Don’t leave autocompaction disabled during bootstrap and replace 
(CASSANDRA-21236)
  * Make nodetool abortbootstrap more robust (CASSANDRA-21235)
  * Don't clear prepared statement cache on nodetool cms initialize 
(CASSANDRA-21234)
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java 
b/src/java/org/apache/cassandra/service/StorageProxy.java
index 70de57d6be..4368f6d4fc 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -1441,8 +1441,11 @@ public class StorageProxy implements StorageProxyMBean
         boolean attributeNonAccordLatency = true;
         long nonAccordEndTime = -1;
 
-        if (mutations.stream().anyMatch(mutation -> 
Keyspace.open(mutation.getKeyspaceName()).getReplicationStrategy().hasTransientReplicas()))
-            throw new AssertionError("Logged batches are unsupported with 
transient replication");
+        for (IMutation mutation : mutations)
+        {
+            if 
(Keyspace.open(mutation.getKeyspaceName()).getReplicationStrategy().hasTransientReplicas())
+                throw new AssertionError("Logged batches are unsupported with 
transient replication");
+        }
 
         try
         {
diff --git a/src/java/org/apache/cassandra/transport/ProtocolVersion.java 
b/src/java/org/apache/cassandra/transport/ProtocolVersion.java
index 1555e5f558..7a7e23808c 100644
--- a/src/java/org/apache/cassandra/transport/ProtocolVersion.java
+++ b/src/java/org/apache/cassandra/transport/ProtocolVersion.java
@@ -24,6 +24,8 @@ import java.util.EnumSet;
 import java.util.List;
 import java.util.Optional;
 
+import com.google.common.collect.ImmutableList;
+
 import org.apache.commons.lang3.ArrayUtils;
 
 import org.apache.cassandra.cql3.FunctionContext;
@@ -73,6 +75,7 @@ public enum ProtocolVersion implements 
Comparable<ProtocolVersion>, FunctionCont
 
     /** All supported versions, published as an enumset */
     public final static EnumSet<ProtocolVersion> SUPPORTED = 
EnumSet.copyOf(Arrays.asList(ArrayUtils.addAll(SUPPORTED_VERSIONS)));
+    private final static ImmutableList<String> SUPPORTED_VERSION_STRINGS = 
SUPPORTED.stream().map(ProtocolVersion::toString).collect(ImmutableList.toImmutableList());
 
     /** Old unsupported versions, this is OK as long as we never add newer 
unsupported versions */
     public final static EnumSet<ProtocolVersion> UNSUPPORTED = 
EnumSet.complementOf(SUPPORTED);
@@ -84,12 +87,9 @@ public enum ProtocolVersion implements 
Comparable<ProtocolVersion>, FunctionCont
     public final static ProtocolVersion CURRENT = V5;
     public final static Optional<ProtocolVersion> BETA = Optional.of(V6);
 
-    public static List<String> supportedVersions()
+    public static ImmutableList<String> supportedVersions()
     {
-        List<String> ret = new ArrayList<>(SUPPORTED.size());
-        for (ProtocolVersion version : SUPPORTED)
-            ret.add(version.toString());
-        return ret;
+        return SUPPORTED_VERSION_STRINGS;
     }
 
     public static List<ProtocolVersion> 
supportedVersionsStartingWith(ProtocolVersion smallestVersion)
diff --git a/src/java/org/apache/cassandra/utils/MerkleTree.java 
b/src/java/org/apache/cassandra/utils/MerkleTree.java
index b6b0141db1..d5270673ad 100644
--- a/src/java/org/apache/cassandra/utils/MerkleTree.java
+++ b/src/java/org/apache/cassandra/utils/MerkleTree.java
@@ -1482,7 +1482,7 @@ public class MerkleTree
     {
         assert left.length == right.length;
 
-        byte[] out = Arrays.copyOf(right, right.length);
+        byte[] out = new byte[right.length];
         for (int i = 0; i < left.length; i++)
             out[i] = (byte)((left[i] & 0xFF) ^ (right[i] & 0xFF));
         return out;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to