Skip to content

A receive right after all([...]) returns null with a message pending #1021

Open

Description

@rmcdaniel

Problem

In embedded workflow code, inbox()->receive() / receiveOne() called right after all([...]) returns no message while one is pending on the stream. General's interim review of #1017 found this. The same happens on main before #1017, so it predates that PR.

To investigate

The likely cause is the step the receive sees after all(). A parallel group takes several step positions, and visibleSequence after all() may not be the position the receive is replayed or recorded at. It may also be that the replay guard or recorded-consumption lookup keys on a sequence that the group's children share. Reproduce with a workflow that awaits a signal, runs all([activity(...), activity(...)]), then calls $this->inbox('chat')->receiveOne() with one message pending. Check whether it returns null on the first execution, only on replay, or both.

Expected

A receive after all([...]) behaves like a receive after a single step: on the first execution it consumes the pending message, and on replay it returns that message.

Activity

  1. added
    kind:defectA public product behavior is incorrect
    priority:P2Normal-priority product work
    status:triageAwaiting maintainer classification
    on Nov 4, 2026
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

    kind:defectA public product behavior is incorrectpriority:P2Normal-priority product workstatus:triageAwaiting maintainer classification

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions