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

   ## Problem
   
   `create_topic` returns on metadata commit; the owning shard publishes the 
partition only after `build_partition_fresh` (mkdir, segment open, fallocate). 
A produce issued right after races materialisation, on every shard.
   
   `partition_reconciler` carried a TODO for a materialisation barrier: stop 
non-owners seeding `shards_table` rows, have the owner push its row to peers, 
so row presence implies the partition exists.
   
   Rejected. It turns a deterministic hash cache into a distributed readiness 
protocol whose deltas need ordering, retry and repair, and it gives up 
level-triggered repair (a pass re-derives every row from committed metadata, so 
a lost row is rewritten). The owner can decide all of it locally.
   
   ## Approach
   
   Resolve at the owner; `shards_table` stays a hint.
   
   * `router::route_typed` falls back to `calculate_shard_assignment` on a 
missing row, so an early frame reaches the future owner.
   * `park_if_unmaterialised` holds it until the matching `InsertOwned`, then 
re-queues onto that shard's inbox.
   * `serves_committed_incarnation` refuses a namespace whose committed 
`created_revision` disagrees with the row epoch, so a mid-teardown request 
cannot be acked against an incarnation about to be erased.
   
   Tombstoned namespace, park overflow, and a namespace the shard gave up 
building all reply with a retriable status. No silence, so no lockstep 
transport waits out its read timeout.


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