smengcl commented on PR #6014: URL: https://github.com/apache/ozone/pull/6014#issuecomment-2138022263
For transparency this is what I plan to do further with this PR in order to resolve the `testDatanodeExclusionWithMajorityCommit` failure: 1. Pull in [RATIS-2102](https://issues.apache.org/jira/browse/RATIS-2102), which should fix the bugs in [RATIS-1994](https://issues.apache.org/jira/browse/RATIS-1994) 2. Pull in [RATIS-2089](https://issues.apache.org/jira/browse/RATIS-2089), which will allow `NotReplicatedException` to carry `CommitInfoProto` of all nodes in the Raft quorum returned from Raft server (leader) despite of that `NotReplicatedException` (in which case `reply` would be `null` and won't have the `CommitInfoProto`s we need to populate the `failedServers` dead node list) 3. Tweak `sendRequestAsync()` in order to "fake" a reply using the `CommitInfoProto` that is now being passed with RATIS-2089 even in the event of `NotReplicatedException` (which means server `watch()` timed out after trying to wait for all followers to commit to the desired log index). 4. Because `addDatanodetoReply()` has (unfortunately) been used for two different purposes, and I would need to differentiate the reason nodes are added to the list in order to achieve my goal here. (One for adding dead/timed out datanodes to the `failedServers`. Another for adding replier/leader datanode.) As a result, I would need to tweak `addDatanodetoReply()` and `DatanodeDetails` class (if needed) to tag nodes with the reason they are added to the list in order to achieve the purpose. 5. After 3 and 4 are done, tweak `sendCommandAsync()` to call `addDatanodetoReply()` (or a variant of that as I see fit) to add the dead node to the list. 6. Finally after 3,4,5 are done, tweak whoever calls `get()` on `containerCommandResponse` generated by `sendCommandAsync()` in order to keep the same behavior as `BlockOutputStream#watchForCommit()` does before. -- 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]
