[ https://issues.apache.org/jira/browse/CASSANDRA-20404?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17938473#comment-17938473 ]
Stefan Miklosovic commented on CASSANDRA-20404: ----------------------------------------------- [CASSANDRA-20404|https://github.com/instaclustr/cassandra/tree/CASSANDRA-20404] {noformat} java17_pre-commit_tests ✓ j17_build 6m 57s ✓ j17_cqlsh_dtests_py311 7m 13s ✓ j17_cqlsh_dtests_py311_vnode 8m 23s ✓ j17_cqlsh_dtests_py38 7m 17s ✓ j17_cqlsh_dtests_py38_vnode 7m 24s ✓ j17_cqlshlib_cython_tests 11m 38s ✓ j17_cqlshlib_tests 7m 4s ✓ j17_dtests_latest 42m 51s ✓ j17_dtests_vnode 42m 25s ✓ j17_unit_tests 14m 58s ✓ j17_utests_latest 15m 47s ✓ j17_utests_oa 15m 14s ✕ j17_dtests 37m 39s refresh_test.TestRefresh test_refresh_deadlock_startup ✕ j17_jvm_dtests 27m 43s org.apache.cassandra.fuzz.sai.MultiNodeSAITest indexOnlySaiTest TIMEOUTED ✕ j17_jvm_dtests_latest_vnode 26m 24s org.apache.cassandra.fuzz.sai.MultiNodeSAITest indexOnlySaiTest TIMEOUTED {noformat} [java17_pre-commit_tests|https://app.circleci.com/pipelines/github/instaclustr/cassandra/5680/workflows/a10c763e-a97e-4f4c-8bcd-c9660fe0fa62] > Improve EncryptionOptions class's `with` methods using Builder pattern > ---------------------------------------------------------------------- > > Key: CASSANDRA-20404 > URL: https://issues.apache.org/jira/browse/CASSANDRA-20404 > Project: Apache Cassandra > Issue Type: Improvement > Components: Legacy/Core > Reporter: Maulin Vasavada > Assignee: Maulin Vasavada > Priority: Normal > Fix For: 5.x > > Time Spent: 1h 20m > Remaining Estimate: 0h > > Currently, > [EncryptionOptions.java|https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/config/EncryptionOptions.java#L520] > allows constructing the object using `with` prefix method pattern which > sounds similar to the Builder Pattern > ([example)|https://blogs.oracle.com/javamagazine/post/exploring-joshua-blochs-builder-design-pattern-in-java] > However, when there is any new parameter introduced in the class for a > corresponding configuration option, it requires changes to all the > constructor calls from those `with` methods to reflect the new parameter. > This is error prone given so many string parameters and considering some > [special > use-cases|https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/config/EncryptionOptions.java#L1190] > it makes it challenging to modify the code for a simple task - adding a new > parameter in the class. > Proposal here is to use the Builder pattern (like shows in the example linked > above) to improve the code in EncryptionOptions.java file. > There could be a potential to consider using "java record" type that got > introduced in Java 14+ or using [Lombok plugin|https://projectlombok.org/] > but in order to be backward compatible and avoid additional dependency on > external packages- may be we can simply follow the builder pattern. > One change that we have to be careful about is - the new builder pattern > implementation may not call `applyConfig()` everytime upon calling `with` > methods compared to the current implementation. Only when final > `Builder#build()` happens it will call the applyConfig() method . While that > saves multiple initialization that happen today in Tests due to heavy usage, > we have to assess if there is any impact due to this behavior change. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org