hubcio commented on issue #4273:
URL: https://github.com/apache/iggy/issues/4273#issuecomment-5812180102

   i've put the fix in #4283.
   
   i reproduced two ways this can happen: `Logout` returns `InProgress` while 
another metadata request is pending, or logout skips cleanup because the 
client's entry was evicted from the bounded client table.
   
   the connection is gone, but the member still owns its partition. the 
heartbeat verifier only checks existing connections, so it can't revisit that 
client. replacements join but poll empty, and a restart can bring the stale 
membership back.
   
   the fix periodically checks stored memberships against live sessions across 
replicas. expired members are removed through a committed `Logout`, with a 
session check so delayed cleanup can't kick out a newer connection. the group 
and its saved offsets stay intact.
   
   a real-server test now verifies automatic recovery after client-table 
eviction: the server stays running, the waiting replacement gets the partition, 
and consumption resumes after the saved offset. the simulator reproduces 
`InProgress` too, though it still calls expiry directly.
   
   cleanup waits for the configured timeout and pauses on incomplete reports to 
protect live consumers. replicas need coordinated upgrades, but new servers can 
read previous snapshots and journal records. the storage compatibility check 
passed.
   


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