numinnex opened a new issue, #4443:
URL: https://github.com/apache/iggy/issues/4443

   ### Bug description
   
   `handle_prepare_timeout` (`core/consensus/src/impls.rs:2918-2967`) 
retransmits to every replica missing an ack, including the primary itself, and 
a send to self is a no-op (`core/shard/src/lib.rs:11635`). When all remote acks 
are in and the primary's own journal write is the laggard, the timer only backs 
off and the op does not commit.
   
   The metadata plane papers over the durable case with 
`repair_primary_self_acks` (`core/metadata/src/impls/metadata.rs:3053`), which 
re-acks ops the primary already holds durably but does not retry a lagging 
write. The partition plane has no equivalent and fences the partition fatal 
instead (`core/partitions/src/iggy_partition.rs:5411-5425`).
   
   ### Affected area / component
   
   Iggy server (consensus, both planes)
   
   ### Proposed solution
   
   In `handle_prepare_timeout`, when the only missing ack is the primary's own, 
emit a `RetryLocalWrite { op }` action instead of `RetransmitPrepares`, and let 
the shard re-append and self-ack. Drop self from the retransmit targets.
   
   ### Alternatives considered
   
   Port `repair_primary_self_acks` to the partition plane, which covers the 
durable-but-unacked case only. Keep the fatal fence.


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