You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up from the General interim review of #193 (cleared at 8d2cd2c; merge held until 4.11.2 is tagged).
1. Timer-separated groups (the scope #193 leaves out)
group_condition_reopens_by_member reorders only a contiguous run of one group's condition waits. If another member of the same group sits between condition members, such as a timer in parallel([condition a, timer, condition b]), the run splits. A Server reopen of two woken condition members (a1, t, b1, a2, b2) then still leaves reopens unconsumed (recorded_commands_unconsumed). Extend member ordering across the group's other leaves, keeping each non-condition leaf in place, and add a fixture for that layout. The PHP Server 2.x grouped re-send behaviour is in #191.
2. Scope cancellation picks original members by position
cancellation_scope_replay.rs around lines 438–443, while a scope cancellation is pending:
let original:Vec<_> = self.recorded_commands.iter().skip(index).take(descriptors.len())
...
After #193, recorded_commands is in replay order, not sequence order, so slicing by position can select a member's reopen instead of a sibling's original. Select the original members by sequence (base..base + size), and test a scope cancellation pending over a one-sided grouped reopen.
3. Misplaced doc comment
In #193, fn one_sided_grouped_reopen_history (a test helper) and impl WorkflowState { fn max_recorded_sequence } were inserted between the /// Within a run of grouped condition waits… doc comment and fn group_condition_reopens_by_member, so rustdoc attaches that comment to the wrong item. Move them below the function.
Activity
Order every leaf of a group by member; pick scoped originals by sequence