lnbest0707-uber opened a new pull request, #15432: URL: https://github.com/apache/pinot/pull/15432
`feature` `bugfix` `performance` follow up on https://github.com/apache/pinot/pull/15234 In the event of segment build failure retry, e.g. there are 2 replicas A and B. 1. A and (or) B send `segmentConsumed` request to controller, and get response, A -> Commit, B -> Hold, controller -> COMMIT_NOTIFIED 2. A build failure and send send `segmentBuildDeterministicFailure` to controller 3. Controller reduce the segment size and reset segments 4. A and B destroy the immutable segments and rebuild it 5. A or B consumed all messages, and send `segmentConsumed` request to controller. What's happened next? - If A sends it, and `now > _maxTimeAllowedToCommitMs`, A starts to commit, happy path - If B sends it, and `now > _maxTimeAllowedToCommitMs`, B starts to commit, also happy path - If A sends it, and `now <= _maxTimeAllowedToCommitMs`, highly possible A sent an offset < FSM's recorded offset, DISCARD response will be sent - If B sends it, and `now <= _maxTimeAllowedToCommitMs`, highly possible A sent an offset < FSM's recorded offset, CATCH_UP response will be sent The previous patch did not consider the last 2 conditions. And this PR will catch that by removing the previous status in FSM. -- 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: commits-unsubscr...@pinot.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org