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]
