...
- Guardrail: Interface defining a guardrail that guards against a particular usage/condition.
- DefaultGuardrail: Abstract class implementing Guardrail. It implements the default behaviour when the guardrail is triggered consisting on throwing warnings or errors.
- GuardrailsFactory: Interface defining a factory for building instances of Guardrail.
- DefaultGuardrailsFactory: Class implementing GuardrailsFactory, it builds instances of DefaultGuardrail.
- CustomGuardrailsFactory: Abstract class instantiating a custom GuardrailsFactory, so users can provide their own implementations of guardrails through a system property named
cassandra.custom_guardrails_factory_class
. - GuardrailsConfig: Configuration settings for Guardrails, which are populated from
cassandra.yaml
. This contains a main settingenabled
, controlling if Guardrails are globally active or not, and individual settings to control each Guardrail. - cassandra.yaml: allows configuring individual Guardrails at startup, being globally disabled by default.
- Guardrails: Entry point for guardrails, storing all the defined guardrail instances and additional helper methods. These Guardrail instances are built at startup with the provided GuardrailsFactory and GuardrailsConfig.
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
# guardrails # enabled: false # column_value_size_failure_threshold_in_kb: -1 # columns_per_table_failure_threshold: -1 # secondary_index_per_table_failure_threshold: -1 # materialized_view_per_table_failure_threshold: -1 # tables_warn_threshold: -1 # tables_failure_threshold: -1 # table_properties_disallowed: # write_consistency_levels_disallowed: # partition_size_warn_threshold_in_mb: -1 # partition_keys_in_select_failure_threshold: -1 # disk_usage_percentage_warn_threshold: -1 # disk_usage_percentage_failure_threshold: -1 # in_select_cartesian_product_failure_threshold: -1 # user_timestamps_enabled: true # read_before_write_list_operations_enabled: true # fields_per_udt_failure_threshold: -1 # collection_size_warn_threshold_in_kb: -1 # items_per_collection_warn_threshold: -1 |
It will also be possible to dynamically configure guardrails at runtime through JMX and possibly virtual tables.
Migrating existing cassandra.yaml warn/fail thresholds
...
Guardrails allow C* operators to impose system-wide restrictions that are configured through yaml and JMX/virtual tables. Capability restrictions are focused on imposing restrictions on particular users and offer a new CQL API to do so. Both concepts are not mutually exclusive and are complementary.
...