LZD-PratyushBhatt opened a new pull request, #3044:
URL: https://github.com/apache/helix/pull/3044

   ### Issues
   
   - [ ] My PR addresses the following Helix issues and references them in the 
PR description:
   
   (#200 - Link your issue number here: You can write "Fixes #XXX". Please use 
the proper keyword so that the issue gets closed automatically. See 
https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue
   Any of the following keywords can be used: close, closes, closed, fix, 
fixes, fixed, resolve, resolves, resolved)
   This PR closes #3041 , adds support for Maintenance mode Stacking.
   
   ### Description
   
   - [ ] Here are some details about my PR, including screenshots of any UI 
changes:
   
   (Write a concise description including what, why, how)
   The current implementation of maintenance mode for clusters supports only a 
single reason at a time, tracked using the simpleFields.REASON key. This 
restricts the functionality to a single actor and reason, which limits 
flexibility and coordination.
   
   This proposal introduces a new design that allows multiple actors to 
independently place a cluster into maintenance mode for different reasons. We 
will extend the maintenance mode design to support multiple actors, each 
capable of independently adding or removing their own maintenance reason. The 
cluster will remain in maintenance mode as long as at least one active reason 
exists. Each reason will be associated with metadata such as the actor, reason, 
and timestamp. For backwards compatibility, the existing simpleFields.REASON 
will be retained and updated to reflect the most recent active reason. If a 
reason is removed, it will be replaced with the next most recent one. While 
legacy clients that remove the entire znode cannot be completely prevented, we 
will handle such cases gracefully and recommend migrating to an updated API 
that enables proper multi-actor maintenance handling.
   
   ### Tests
   
   - [ ] The following tests are written for this issue:
   testAutomationMaintenanceMode, testRemoveMaintenanceReasonNoDuplicates, 
testLegacyClientCompatibility, testMaintenanceHistoryAfterOperationFlag, 
testMultiActorMaintenanceModeExitSequence, 
testMultiActorMaintenanceModeReconciliation, 
testMultiActorMaintenanceModeOldClientExit, 
testMultiActorMaintenanceModeOldClientOverride, 
testMultiActorMaintenanceModeInvalidExit
   
   (List the names of added unit/integration tests)
   
   - The following is the result of the "mvn test" command on the appropriate 
module:
   
   (If CI test fails due to known issue, please specify the issue and test PR 
locally. Then copy & paste the result of "mvn test" to here.)
   
   ### Changes that Break Backward Compatibility (Optional)
   
   - My PR contains changes that break backward compatibility or previous 
assumptions for certain methods or API. They include:
   
   (Consider including all behavior changes for public methods or API. Also 
include these changes in merge description so that other developers are aware 
of these changes. This allows them to make relevant code changes in feature 
branches accounting for the new method/API behavior.)
   
   ### Documentation (Optional)
   
   - In case of new functionality, my PR adds documentation in the following 
wiki page:
   
   (Link the GitHub wiki you added)
   
   ### Commits
   
   - My commits all reference appropriate Apache Helix GitHub issues in their 
subject lines. In addition, my commits follow the guidelines from "[How to 
write a good git commit message](http://chris.beams.io/posts/git-commit/)":
     1. Subject is separated from body by a blank line
     1. Subject is limited to 50 characters (not including Jira issue reference)
     1. Subject does not end with a period
     1. Subject uses the imperative mood ("add", not "adding")
     1. Body wraps at 72 characters
     1. Body explains "what" and "why", not "how"
   
   ### Code Quality
   
   - My diff has been formatted using helix-style.xml 
   (helix-style-intellij.xml if IntelliJ IDE is used)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to