Details
-
New Feature
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
Operability
-
Low Hanging Fruit
-
All
-
None
-
Description
Add a guardrail for limiting the number of partitions restricted with an IN clause in a SELECT query, for example:
# Guardrail to warn or abort when querying with an IN restriction selecting
# more partition keys than threshold.
# The two thresholds default to -1 to disable.
partition_keys_in_select:
warn_threshold: -1
abort_threshold: -1
Additional information for newcomers:
- Add the configuration for the new guardrail on the number of partitions on IN queries in the guardrails section of cassandra.yaml.
- Add a getPartitionKeysInSelect method in GuardrailsConfig returning a Threshold.Config object
- Implement that method in GuardrailsOptions, which is the default yaml-based implementation of GuardrailsConfig
- Add a Threshold guardrail named partitionKeysInSelect in Guardrails, using the previously created config
- Define JMX-friendly getters and setters for the previously created config in GuardrailsMBean
- Implement the JMX-friendly getters and setters in Guardrails
- Now that we have the guardrail ready, it’s time to use it. We should search for a place to invoke the Guardrails.partitionKeysInSelect#guard method with the number of keys specified in select query. The SelectStatement#getSliceCommands methods look like good candidates for this.
- Finally, add some tests for the new guardrail. Given that the new guardrail is a Threshold, our new test should probably extend ThresholdTester.
Attachments
Issue Links
- fixes
-
CASSANDRA-9454 Log WARN on Multi Partition IN clause Queries
- Resolved
- is related to
-
CASSANDRA-17187 Guardrail for SELECT IN terms and their cartesian product
- Resolved
- links to