Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
producer/request_state: make set_value() idempotent
In some racy situations it may happen that the request is already errored out. Consider the following sequence of actions. replicate_f - succeeded but set_value() not called -- scheduling point -- term change -> sync() -> GC of inflight requests, request is marked timedout now set_value() is called in the original fiber, this triggers an assert. Relaxing the assert condition to make it idempotent. Subsequent client retry of the request will be marked success (once the change is applied in the stm and the request state is populated). Unable to reproduce in a unit test mainly due to lack of an idempotent client in the unit test fixture.
- Loading branch information