tkhurana opened a new pull request, #2600:
URL: https://github.com/apache/phoenix/pull/2600

   A co-active RS in STORE_AND_FORWARD promotes back to SYNC_AND_FORWARD via 
processNoMoreRoundsLeft only when the caught-up guard passes. That guard 
scanned the next round's shard, which is a shared directory holding every 
co-active RS's live OPENFORWRITE rotation writer, so an idle or out-claimed RS 
never saw it empty and stayed pinned in STORE_AND_FORWARD, wedging the group at 
ACTIVE_NOT_IN_SYNC indefinitely.
   
   Split the guard: the RS's own mode flip is gated only on an empty 
in-progress directory (the per-RS forward-health signal), while the shared 
in-sync status claim keeps the full caught-up guard. The mode flip is 
self-validating since SyncAndForwardModeImpl.onEnter must reach the peer, so an 
optimistic promotion against a dead peer bounces back to STORE_AND_FORWARD.
   
   Adds a VisibleForTesting tracker-injecting constructor and three focused 
tests covering the wedge fix, the peer-down backlog case (no promotion), and 
the fully-caught-up case.
   


-- 
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]

Reply via email to