Problem
Reliable chat ingress can enter an unthrottled replay loop after reconnect when the Gateway cursor points to a producer sequence that the desktop client has already compacted out of its retained journal.
The Gateway repeatedly returns REPLAY_FROM_EXPECTED; the client immediately flushes its retained floor again; neither side advances to checkpoint recovery. This can consume CPU and make the desktop/WebUI appear frozen.
Reproduction
- Commit an ingress prefix on the Gateway.
- Compact the producer journal so its retained floor is newer than the Gateway expected sequence.
- Reconnect and send the retained floor twice.
- Observe repeated replay acknowledgements without recovery.
Expected
The first gap may request replay for ordinary reordering. A repeated identical gap should request a fresh checkpoint, accept a checkpoint covering the missing range, and continue with later producer records. Batch and fragmented ingress should behave consistently.
Problem
Reliable chat ingress can enter an unthrottled replay loop after reconnect when the Gateway cursor points to a producer sequence that the desktop client has already compacted out of its retained journal.
The Gateway repeatedly returns
REPLAY_FROM_EXPECTED; the client immediately flushes its retained floor again; neither side advances to checkpoint recovery. This can consume CPU and make the desktop/WebUI appear frozen.Reproduction
Expected
The first gap may request replay for ordinary reordering. A repeated identical gap should request a fresh checkpoint, accept a checkpoint covering the missing range, and continue with later producer records. Batch and fragmented ingress should behave consistently.