The CEP-37 work has been successfully merged into the trunk today! Please let me know if you have any issues.
This merge is a massive win for Apache Cassandra — a significant step forward. But we're not stopping here. There's more to come, and we are committed to pushing repair automation even further and closing the gaps in the remaining flows. A few examples: 1. Automatically running repair as part of the node replacement: Design <https://docs.google.com/document/d/1SZIQPbIWNDsbWnIk5N5tyQCQzJ4ypwuhH-t5dO5WeZs/edit?tab=t.0> & POC <https://github.com/jaydeepkumar1984/cassandra/pull/54> is already out [CASSANDRA-20281 <https://issues.apache.org/jira/browse/CASSANDRA-20281>] 2. Stopping repair automatically between Cassandra major version upgrades [CASSANDRA-20048 <https://issues.apache.org/jira/browse/CASSANDRA-20048>] 3. Repairing automatically when Keyspace replication changes [ CASSANDRA-20582 <https://issues.apache.org/jira/browse/CASSANDRA-20582>] Thanks for all the help and support from the Apache Cassandra community! Yours sincerely, Andy Tolbert, Chris Lohfink, Francisco Guerrero, Kristijonas Zalys, and Jaydeep On Sun, Mar 9, 2025 at 8:53 PM Jaydeep Chovatia <chovatia.jayd...@gmail.com> wrote: > Thanks a lot, Jon! > This has truly been a team effort, with Andy Tolbert, Chris Lohfink, > Francisco Guerrero, and Kristijonas Zalys all contributing over the past > year. The credit belongs to everyone! > > Jaydeep > > > > > > On Sun, Mar 9, 2025 at 2:35 PM Jon Haddad <j...@rustyrazorblade.com> wrote: > >> This is all really exciting. Getting a built in, orchestrated repair is >> a massive achievement. Thank you for your work on this, it's incredibly >> valuable to the community!! >> >> Jon >> >> On Sun, Mar 9, 2025 at 2:25 PM Jaydeep Chovatia < >> chovatia.jayd...@gmail.com> wrote: >> >>> No problem, Dave! Thank you. >>> >>> Jaydeep >>> >>> On Sun, Mar 9, 2025 at 10:46 AM Dave Herrington <he...@rhinosource.com> >>> wrote: >>> >>>> Jaydeep, >>>> >>>> Thank you for taking time to answer my questions and for the links to >>>> the design and overview docs, which are excellent and answer all of my >>>> remaining questions. Sorry I missed those links in the CEP page. >>>> >>>> Great work and I will continue to follow your progress on this powerful >>>> new feature. >>>> >>>> Thanks! >>>> -Dave >>>> >>>> On Sat, Mar 8, 2025 at 9:36 AM Jaydeep Chovatia < >>>> chovatia.jayd...@gmail.com> wrote: >>>> >>>>> Hi David, >>>>> >>>>> Thanks for the kind words! >>>>> >>>>> >Is there a goal in this CEP to make automated repair work during >>>>> rolling upgrades, when multiple versions exist in the cluster? >>>>> We debated a lot on this over ASF Slack >>>>> (#cassandra-repair-scheduling-cep37). The summary is that, ideally, we >>>>> want >>>>> to have a repair function during the mixed version, but the reality is >>>>> that >>>>> currently, there is no test suite available inside Apache Cassandra to >>>>> verify the streaming behavior during the mixed version, so the confidence >>>>> is low. >>>>> We agreed on the following: 1) Keeping safety in mind, we should by >>>>> default disable the repair during mixed version 2) Add a comprehensive >>>>> test >>>>> suite 3) Allow repair during mixed version. Currently, we are at #1 >>>>> >>>>> >Would automated repair be smart enough to automatically stop, if it >>>>> sees incompatible versions? >>>>> That's the plan, and we already have PR (CASSANDRA-20048 >>>>> <https://issues.apache.org/jira/browse/CASSANDRA-20048>) out from >>>>> Chris Lohfink. The thing we are debating is whether to stop only during >>>>> major version mismatch or also during the minor version, and we are >>>>> leaning >>>>> towards only disabling for the major version mismatch. Regardless, this >>>>> should be available soon. >>>>> We are also extending this further as per feedback from David >>>>> Capwell that we should automatically stop repair if we detect a new DC or >>>>> keyspace RF is changed. That will be covered later as part of >>>>> CASSANDRA-20414 >>>>> <https://issues.apache.org/jira/browse/CASSANDRA-20414> >>>>> >>>>> >If automated repair must be disabled for the entire cluster, will >>>>> this be a single nodetool command, or must automated repair be disabled on >>>>> each node individually? >>>>> Yes, it is a nodetool command and does not require any restarts! All >>>>> the *nodetool* command details are currently covered in the design doc >>>>> <https://docs.google.com/document/d/1CJWxjEi-mBABPMZ3VWJ9w5KavWfJETAGxfUpsViPcPo/edit?tab=t.0#heading=h.89fmsespiosd>, >>>>> and the same details will also be available in the Cassandra >>>>> overview.adoc >>>>> <https://github.com/apache/cassandra/pull/3598/files?short_path=e901018#diff-e90101885c1188844bb4188d1301277bfdc4a9e1e705c4ab8a6cc5a4b44460c0> >>>>> . >>>>> >>>>> >Would it make sense for automated repair to upgrade sstables, if it >>>>> finds old formats? (Maybe this could be a feature that could be optionally >>>>> enabled?) >>>>> My opinion is that it should not be part of the repair. It is best >>>>> suited as part of the Cassandra upgrade framework; I guess Paulo M is >>>>> looking at it. >>>>> >>>>> >W.R.T. the repair logging tables in the system_distributed keyspace, >>>>> will these tables have a configurable TTL, or must they be periodically >>>>> truncated to limit their size? >>>>> The number of entries will equal the number of Cassandra nodes in a >>>>> cluster. There is no TTL because each row represents the repair status of >>>>> that particular node. The entries would be automatically added/removed as >>>>> nodes are added/removed from the Cassandra cluster. >>>>> >>>>> Jaydeep >>>>> >>>>> On Sat, Mar 8, 2025 at 7:46 AM Dave Herrington <he...@rhinosource.com> >>>>> wrote: >>>>> >>>>>> Jaydeep, >>>>>> >>>>>> Thank you for your excellent efforts on this mission-critical >>>>>> feature. The stated goals of CEP-37 are noble and stand to make valuable >>>>>> improvements for cluster operations. I look forward to testing these new >>>>>> capabilities. >>>>>> >>>>>> My apologies up-front if you’ve already answered these questions. I >>>>>> did read the CEP a number of times and the linked JIRAs, but these are my >>>>>> questions that I couldn’t answer myself. >>>>>> >>>>>> I’m interested to understand the goals of CEP-37 W.R.T. to rolling >>>>>> upgrades of large clusters, as I am responsible for maintaining the >>>>>> cluster >>>>>> operations runbooks for a number of customers. >>>>>> >>>>>> Operators have to navigate the upgrade gauntlet with automated >>>>>> repairs disabled and get all nodes upgraded within gc_grace_seconds and >>>>>> then do a full repair, before restarting automated repairs. >>>>>> >>>>>> I see that CASSANDRA-7530 >>>>>> https://issues.apache.org/jira/browse/CASSANDRA-7530 is related to >>>>>> this. >>>>>> >>>>>> Is there a goal in this CEP to make automated repair work during >>>>>> rolling upgrades, when multiple versions exist in the cluster? >>>>>> >>>>>> (I think this would imply that stopping automated repairs would no >>>>>> longer be a pre-upgrade step.) >>>>>> >>>>>> Would automated repair be smart enough to automatically stop, if it >>>>>> sees incompatible versions? >>>>>> >>>>>> Would automated repair continue between nodes with compatible >>>>>> versions, or would it stop for the entire cluster? >>>>>> >>>>>> If automated repair must be disabled for the entire cluster, will >>>>>> this be a single nodetool command, or must automated repair be disabled >>>>>> on >>>>>> each node individually? >>>>>> >>>>>> Would it make sense for automated repair to upgrade sstables, if it >>>>>> finds old formats? (Maybe this could be a feature that could be >>>>>> optionally >>>>>> enabled?) >>>>>> >>>>>> W.R.T. the repair logging tables in the system_distributed keyspace, >>>>>> will these tables have a configurable TTL, or must they be periodically >>>>>> truncated to limit their size? >>>>>> >>>>>> Thanks, >>>>>> -Dave >>>>>> >>>>>> David A. Herrington II >>>>>> President and Chief Engineer >>>>>> RhinoSource, Inc. >>>>>> >>>>>> *Data Lake Architecture, Cloud Computing and Advanced Analytics.* >>>>>> >>>>>> www.rhinosource.com >>>>>> >>>>>> >>>>>> On Fri, Mar 7, 2025 at 11:48 AM Jaydeep Chovatia < >>>>>> chovatia.jayd...@gmail.com> wrote: >>>>>> >>>>>>> Hello Everyone, >>>>>>> >>>>>>> I wanted to update you on CEP-37 >>>>>>> <https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-37+Apache+Cassandra+Unified+Repair+Solution> >>>>>>> (Jira: >>>>>>> CASSANDRA-19918 >>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-19918>) work. >>>>>>> Over the last year, some of us (Andy Tolbert, Chris Lohfink, >>>>>>> Francisco Guerrero, and Kristijonas Zalys) have been working closely on >>>>>>> making CEP-37 rock solid, with support from Josh McKenzie, Dinesh Joshi, >>>>>>> and David Capwell. >>>>>>> First and foremost, a huge thank you to everyone, including the >>>>>>> broader Apache Cassandra community, for their invaluable contributions >>>>>>> in >>>>>>> making CEP-37 robust and solid! >>>>>>> >>>>>>> Here is the current status: >>>>>>> >>>>>>> *Feature stability* >>>>>>> >>>>>>> - *Voted feature:* All the features mentioned in CEP-37 have >>>>>>> worked as expected. >>>>>>> - *Post-voted feature:* A few new minor improvements >>>>>>> >>>>>>> <https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=272927365#CEP37ApacheCassandraUnifiedRepairSolution-Post-VoteUpdates> >>>>>>> have been added to post-voting, and they are also working as >>>>>>> expected. >>>>>>> - Tested the functionality by multiple people over the period of >>>>>>> time. >>>>>>> - Some other facts: it has already been validated at scale >>>>>>> <https://www.youtube.com/watch?v=xFicEj6Nhq8>. Another big >>>>>>> Cassandra use case is in the process of validating/adopting it in >>>>>>> their >>>>>>> environment. >>>>>>> >>>>>>> *Source Code* >>>>>>> >>>>>>> - It is an opt-in feature; nobody notices anything unless >>>>>>> someone opts in. >>>>>>> - By default, this feature is pretty isolated (in a separate >>>>>>> package) from the source code point of view (94% of the source code >>>>>>> lines are in the new files) >>>>>>> - A thorough documentation has been added: >>>>>>> - overview.doc >>>>>>> - metrics.doc >>>>>>> - cassandra.yaml doc >>>>>>> - NEWS.txt overview >>>>>>> - Five people (Andy Tolbert, Chris Lohfink, Francisco Guerrero, >>>>>>> and Kristijonas Zalys) have contributed. >>>>>>> - The source code has been reviewed multiple times by the same >>>>>>> five people. >>>>>>> >>>>>>> *Test Coverage* >>>>>>> >>>>>>> - A comprehensive test coverage has been added to cover all >>>>>>> aspects. >>>>>>> - The entire test suite has been passing >>>>>>> >>>>>>> >>>>>>> We are in the final review phase and nearly ready to merge. If >>>>>>> anyone has any last-minute feedback, this is the final opportunity for >>>>>>> review. >>>>>>> >>>>>>> Thank you! >>>>>>> Andy Tolbert, Chris Lohfink, Francisco Guerrero, Kristijonas Zalys, >>>>>>> and Jaydeep >>>>>>> >>>>>> >>>> >>>> -- >>>> -Dave >>>> >>>> David A. Herrington II >>>> President and Chief Engineer >>>> RhinoSource, Inc. >>>> >>>> *Data Lake Architecture, Cloud Computing and Advanced Analytics.* >>>> >>>> www.rhinosource.com >>>> >>>