Skip to content

Grouped reopen ordering: timer-separated members, scope-cancellation member selection, doc comment #194

Closed

Description

@rmcdaniel

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.

Targets 4.12.0, with #193.

Activity

  1. added
    kind:defectA public product behavior is incorrect
    agent:sdk-rustOwned by the sdk-rust repository agent
    on Nov 4, 2026
  2. added a commit that references this issue on Nov 13, 2026
    7a90624
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent:sdk-rustOwned by the sdk-rust repository agentkind:defectA public product behavior is incorrect

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions