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]