hubcio opened a new pull request, #3761:
URL: https://github.com/apache/iggy/pull/3761

   Deleting and recreating a stream or topic reuses the same internal
   partition key. Requests in flight during that window could go wrong
   in several ways:
   
   - the server replied with a fake empty success and wrote nothing
   - the server never replied at all and the client hung for 30s
   - the reconciler could skip the rebuild forever, wedging the
     namespace until an unrelated change woke it up
   - a batch could land in the old partition, get acked, and then be
     deleted together with it when the reconciler caught up
   
   The server now answers such requests with TransientNotAccepted, a
   retriable error the SDK replays until the partition is ready (HTTP
   gets 503 with Retry-After). The reconciler drains staged work on
   every consensus tick, so a lost wake-up heals within 10ms, and a
   deferred rebuild counts as progress, so the fast-skip can no longer
   starve it.
   
   The acked-then-deleted case is closed with an incarnation check: a
   recreated partition looks identical to the old one by key, so the
   shard compares the created_revision in committed metadata with the
   one on its routing table and refuses to serve until they match.
   Replicated traffic between nodes is not checked: a backup must
   apply whatever the primary admitted. The simulator setup had to be
   fixed as well, since it registered partitions with no metadata
   behind them, which a real server can never produce.
   
   Separately, an oversized HTTP request (413) left its connection in
   a state the client thought was reusable, and the next request on
   it failed with IncompleteMessage. 413 responses now carry
   Connection: close on HTTP/1 (HTTP/2 forbids that header).
   
   Test-side: message_retrieval pins to a single node (failover was
   never intended), purge_delete waits for segment cleanup instead of
   racing it, the json_array sink test seeds messages before the
   runtime starts, and the 413 test asserts Connection: close.
   


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