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

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

Great, thanks.

A detail that is missing is using [a single 
setter|https://github.com/apache/cassandra/pull/2246#discussion_r1158464478] 
for both the warn and fail thresholds, [this 
way|https://github.com/adelapena/cassandra/commit/8cf47d8be03d7563762acd320866b86b9952d25c].

Something that I missed on my first review round is that the guardrails for 
column and collection sizes use {{String}} arguemnts on the JMX methods that 
manipulate the underlying {{DataStorageSpec}} attributes. Those 
{{{}String{}}}-based methods are probably more useful than directly expressing 
the thresholds in bytes, and give us a good alignment between JMX and the 
values on {{{}cassandra.yaml{}}}.

We should probably also use {{String}} arguments on the JMX methods for new 
{{{}DurationSpec{}}}-based guardrails, That way they would be better aligned 
with the other guardrails and the {{cassandra.yaml}} properties. [This 
commit|https://github.com/adelapena/cassandra/commit/4a40d94fae723655ef90c6a94817cf49676f0b3c]
 shows how the approach would look like.

Once we have standarized the JMX methods for the new guardrails, we can make 
their tests extend {{{}ThresholdTester{}}}. The benefit of doing so is that 
{{ThresholdTester}} includes some testing for config validation that we are 
missing on the current tests. This requires some minor changes on 
{{ThresholdTester}} in order to make it work with {{{}DurationSpec{}}}-based 
guardrails. I have included those changes in the previous commit.

A final detail would be adding some tests for the new 
{{DurationSpec.LongMicrosecondsBound}} class. Those tests can be added on 
[{{DurationSpecTest}}|https://github.com/apache/cassandra/blob/trunk/test/unit/org/apache/cassandra/config/DurationSpecTest.java],
 which already contains tests for the other subclasses of {{{}DurationSpec{}}}.

Regarding CI, I think that the runs are not running the jobs to repeatedly run 
the new tests. Those jobs are meant reduce the risk of introducing new flakies. 
The CircleCI config file including the repeated runs can be generated by 
running:
{code:java}
.circleci/generate.sh -p{code}

> Add Option to Timebox write timestamps
> --------------------------------------
>
>                 Key: CASSANDRA-18352
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-18352
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: CQL/Semantics
>            Reporter: Jordan West
>            Assignee: Jordan West
>            Priority: Normal
>          Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> In several cases it is desirable to have client provided timestamps generated 
> at the application-level. This can be error prone, however. In particular, 
> applications can choose timestamps that may be nonsensical for a given 
> application. One dangerous manifestation of this is the "doomstone" (a 
> tombstone far in the future of any realistic write). This feature would allow 
> either operators or users to specify a minimum and maximum timebound of 
> "reasonable" timestamps. The default would be negative infinity, positive 
> infinity to maintain backwards compatibility. Writes that are USING TIMESTAMP 
> with a timestamp outside of the timebox will see an exception. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to