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]