Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix an add/remove race in Supplier::Preserving
The tap list was vulnerable to a situation where the `tap(...)` call could result in a sequence of actions that would `close` that tap, but the tap had not been added to the tap list yet. This could result in us having a taplist containing `Mu`, and `Mu.emit` would blow up (the call meaning to target a TapListEntry`. Even if the `Mu` insertion were to be avoided, we'd still end up with the closed tap being put in the list. Resolve this fully by introducing a pair of flags to indicate if we have added or removed the entry. Only really do the removal if we've added it, and only really do the addition if we didn't (in spirit) remove it. Fixes flapping in S17-supply/supplier-preserving.t.
- Loading branch information