Skip to content

Gateway reliable ingress loops when replay cursor was compacted #344

Description

@AlphaCatMeow

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

  1. Commit an ingress prefix on the Gateway.
  2. Compact the producer journal so its retained floor is newer than the Gateway expected sequence.
  3. Reconnect and send the retained floor twice.
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions