A join that reads a collected variable to decide (a quorum, threshold or matching join, and the merge that feeds a count condition) compares the value as a scalar. When an interaction stores a structured outcome instead of a bare value, for example the comment_operation task which writes a {result, comment} pair, the comparison never matches its approve value, so the quorum never counts the vote and the join stalls.

A join votes on the decision, not the whole record. When a collected value is an array with a result entry, the join should vote on that entry; a plain scalar is unchanged. This keeps both the value-aware join decision and the merged vote list a count condition routes on reading the decision, whatever shape the interaction stored it in.

Steps to reproduce

Fork into an operator branch running a comment_operation interaction whose outcome feeds a quorum join collect variable. The operator submits a decision; the quorum stays open because the structured {result, comment} value never equals the approve value.

Proposed resolution

In JoinCoordinator, collapse a collected value that is an array with a result entry to that entry, at both the join-decision and the vote-merge collection points, so every value-aware join handles a structured outcome. Adds kernel coverage for the merged list and the quorum decision.

Issue fork orchestra-3612351

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

mably created an issue. See original summary.

  • mably committed c6dfb492 on 1.x
    fix: #3612351 Value-aware joins must vote on the result of a structured...
mably’s picture

Status: Active » Fixed

Now that this issue is closed, review the contribution record.

As a contributor, attribute any organization that helped you, or if you volunteered your own time.

Maintainers, credit people who helped resolve this issue.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.