Skip to content

Conversation

@Jiaxu-Li
Copy link

  • Explanation:
    Fix duplicated emissions when re-iterating Observations after cancelling a prior iteration by allocating internal state per iterator (instead of sharing state across iterations).
  • Scope:
    Stdlib Observation change; alters internal iteration-state lifetime (sequence-scoped → iterator-scoped). No API surface change, but behavior changes for code that (implicitly) relied on cross-iterator state sharing.
  • Issues:
    Resolves [Observations] Subsequent iteration on Observations receives double values #85683
  • Original PRs:
    N/A
  • Risk:
    Low–medium. Changes internal state sharing semantics between iterators; could affect any undocumented reliance on shared dirty/continuation bookkeeping across multiple iterators.
  • Testing:
    Not tested on any platform.
  • Reviewers:
    N/A

…ns after cancellation

Fix swiftlang#85683: avoid duplicated values when re-iterating `Observations` after cancelling a prior iteration.

This changes `Observations` to allocate its internal `_ManagedCriticalState<State>` per iterator (in `makeAsyncIterator()`), rather than sharing a single state across all iterations. Sharing state allowed change notifications from a cancelled iteration to interfere with subsequent iterations, resulting in duplicated emissions.
@Jiaxu-Li
Copy link
Author

@swift-ci Please smoke test

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Observations] Subsequent iteration on Observations receives double values

1 participant