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]

Reply via email to