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

netudima pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit a2d6a9190d9e5aa71bf1da1b225e755807081eb2
Merge: a504860cc0 1e865038e8
Author: Dmitry Konstantinov <[email protected]>
AuthorDate: Wed Aug 26 23:47:54 2026 +0100

    Merge branch 'cassandra-6.0' into trunk
    
    * cassandra-6.0:
      Reduce overheads of isOrdinaryUser check performed by Guardrail.enabled

 CHANGES.txt                                        |   1 +
 .../apache/cassandra/auth/AuthenticatedUser.java   |  18 +-
 .../org/apache/cassandra/auth/RoleResource.java    |  15 +-
 src/java/org/apache/cassandra/auth/Roles.java      |  10 +
 src/java/org/apache/cassandra/auth/RolesCache.java |  37 +++
 .../org/apache/cassandra/config/DurationSpec.java  |  43 +++-
 .../apache/cassandra/cql3/RowUpdateBuilder.java    |  12 +-
 .../cassandra/cql3/statements/BatchStatement.java  |   8 +-
 .../cql3/statements/ModificationStatement.java     |  29 ++-
 .../org/apache/cassandra/service/ClientState.java  |  66 ++++-
 .../test/microbench/ClientStateIsSuperBench.java   | 124 +++++++++
 .../apache/cassandra/service/ClientStateTest.java  | 276 +++++++++++++++++++++
 12 files changed, 612 insertions(+), 27 deletions(-)

diff --cc CHANGES.txt
index b0fa97d256,04fa7a78a9..374179ed26
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,16 -1,8 +1,17 @@@
 -6.0-alpha3
 +7.0
 + * Reject LIKE patterns with a wildcard (%) anywhere other than the start or 
end (CASSANDRA-21068)
 + * Support pluggable default role initialization (CASSANDRA-21546)
 + * Add prepared statement cache stats to nodetool info (CASSANDRA-14366)
 + * Don't increment client metrics on messaging service connection unpause 
(CASSANDRA-21491)
 + * Add nodetool getreplicas (CASSANDRA-17665)
 + * Implementation of CEP-49: Hardware-accelerated compression 
(CASSANDRA-20975)
 + * Avoid using ObjectUtils.getFirstNonNull in Schema (CASSANDRA-21394)
 + * Allow nodetool garbagecollect to take a user defined list of SSTables 
(CASSANDRA-16767)
 + * Add a guardrail for misprepared statements (CASSANDRA-21139)
 +Merged from 6.0:
+  * Reduce overheads of isOrdinaryUser check performed by Guardrail.enabled 
(CASSANDRA-21589)
   * MultiStepOperations should not encode range movements using endpoints 
(CASSANDRA-21582)
   * Avoid "During operation execution,... at ONE the ring has changed from 
epoch1 to epoch2 error" with counter writes (CASSANDRA-21585)
 - * Reject LIKE patterns with a wildcard (%) anywhere other than the start or 
end (CASSANDRA-21068)
   * Stabilize cursor-based compaction (CASSANDRA-21462)
   * Stop using Java streams in CIDRPermissions.SubsetPermissions#canAccessFrom 
hot method (CASSANDRA-21588)
   * Enable trickle fsync by default (CASSANDRA-21572)
diff --cc 
src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
index f7d9fbc9a3,ef21bf4fe6..a8234f8599
--- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
@@@ -416,18 -416,33 +416,39 @@@ public abstract class ModificationState
              Guardrails.userTimestampsEnabled.ensureEnabled(state);
      }
  
 +    @Override
 +    public void validatePrepare(ClientState state)
 +    {
 +        Guardrails.preparedStatementsRequireParameters.guard(this, 
restrictions, state, metadata.keyspace, metadata.getTableName());
 +    }
 +
+     public enum DiskUsageCheck
+     {
+         NONE,
+         KEYSPACE_WIDE,
+         REPLICA
+     }
+ 
+     public static DiskUsageCheck diskUsageCheck(ClientState state)
+     {
+         if (!DiskUsageBroadcaster.instance.hasStuffedOrFullNode())
+             return DiskUsageCheck.NONE;
+ 
+         if 
(Guardrails.instance.getDataDiskUsageKeyspaceWideProtectionEnabled()
+             && Guardrails.diskUsageKeyspaceWideProtection.enabled(state))
+             return DiskUsageCheck.KEYSPACE_WIDE;
+ 
+         return Guardrails.replicaDiskUsage.enabled(state) ? 
DiskUsageCheck.REPLICA : DiskUsageCheck.NONE;
+     }
+ 
      public void validateDiskUsage(QueryOptions options, ClientState state)
      {
+         validateDiskUsage(options, state, diskUsageCheck(state));
+     }
  
-         if (Guardrails.diskUsageKeyspaceWideProtection.enabled(state) &&
-             
Guardrails.instance.getDataDiskUsageKeyspaceWideProtectionEnabled() &&
-             DiskUsageBroadcaster.instance.hasStuffedOrFullNode())
+     public void validateDiskUsage(QueryOptions options, ClientState state, 
DiskUsageCheck diskUsageCheck)
+     {
+         if (diskUsageCheck == DiskUsageCheck.KEYSPACE_WIDE)
          {
              Keyspace keyspace = Keyspace.open(keyspace());
              // If the keyspace is using NetworkTopologyStrategy then we can 
check each datacenter on which


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

Reply via email to