[ 
https://issues.apache.org/jira/browse/CASSANDRA-17147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17443995#comment-17443995
 ] 

Andres de la Peña commented on CASSANDRA-17147:
-----------------------------------------------

Here is the initial implementation of guardrails:
||PR||CI||
|[trunk|https://github.com/apache/cassandra/pull/1321]|[j8|https://app.circleci.com/pipelines/github/adelapena/cassandra/1145/workflows/9163675f-0392-447b-baab-e2456a4fef40]
 
[j11|https://app.circleci.com/pipelines/github/adelapena/cassandra/1145/workflows/b936cd54-1220-4b9b-8414-81f3be5ac59b]|
The proposed PR is based on a series of patches by [~slebresne], [~jasonstack], 
[~Gerrrr], [~jakubzytka] and myself.

Some characteristics of this implementation are:
* Guardrails configuration is under [a new 
section|https://github.com/apache/cassandra/blob/c900258b2de05315706e3733fe7cff254fcc33fb/conf/cassandra.yaml#L1614-L1643]
 in {{cassandra.yaml}}.
* Each guardrail and the framework itself is disabled by default.
* Guardrails can be dynamically modified through JMX using [this 
mbean|https://github.com/apache/cassandra/blob/c900258b2de05315706e3733fe7cff254fcc33fb/src/java/org/apache/cassandra/db/guardrails/GuardrailsConfigMBean.java].
 Future work will make them updatable also through virtual tables, as soon we 
have writable VTs.
* Guardrails are only applied to the queries of regular users, superusers and 
internal queries are excluded from guardrails.
* Guardrails associated to client requests can only be triggered on the 
coordinator. We will support replica-side guardrails associated to client 
requests in a followup ticket.
* There are initial threshold guardrails for the number of tables, indexes and 
materialized views.
* There is an enable/disable guardrail for user-provided timestamps.
* There are guardrails for disallowing and/or warning on a set of table 
properties.

> Guardrails prototype
> --------------------
>
>                 Key: CASSANDRA-17147
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17147
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Feature/Guardrails
>            Reporter: Andres de la Peña
>            Assignee: Andres de la Peña
>            Priority: Normal
>
> The purpose of this ticket is creating an initial implementation of the 
> guardrails framework, as well as adding a few simple guardrails using this 
> framework.
> To keep things easy, this initial implementation would only support 
> guardrails that are triggered on the coordinator, and they would be 
> dynamically updatable only through JMX.
> Once we have this initial framework ready in a feature branch we can have 
> multiple tickets addressing all the things that would have been left out of 
> the scope of this ticket, such as:
> * Dynamic updates through virtual tables
> * Being able to notify about guardrails triggered on replicas
> * Using custom exceptions other than {{InvalidRequestException}}.
> * Porting existing limits to use the new guardrails framework
> * Adding new guardrails beyond the initial ones
> The reason for having this simpler prototype is that it will give us a common 
> ground to parallelize work on the parts mentioned above.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to