[PR #12510] fix(workflow): fix answer node stream processing in conditional branches #27660

Closed
opened 2026-02-21 20:41:57 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/12510

State: closed
Merged: Yes


Summary

Previously, the _fetch_node_ids_in_reachable_branch method would collect all downstream
answer nodes regardless of branch conditions, causing incorrect stream processing.
This change ensures that only nodes in the current conditional branch are collected
by tracking and matching branch identifiers.

  • Add branch_identify parameter to track current branch context
  • Add condition check to only follow edges matching current branch
  • Skip edges with mismatched branch identifiers

Tip

Close issue syntax: Fixes #<issue number> or Resolves #<issue number>, see documentation for more details.

Fixes #11542
image

Fixes #9560
image

Fixes #10638
image

Fixes #10564
image

Also fixes #11985 (streaming output)

Screenshots

Before After
image image

Checklist

Important

Please review the checklist below before submitting your pull request.

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/12510 **State:** closed **Merged:** Yes --- # Summary Previously, the _fetch_node_ids_in_reachable_branch method would collect all downstream answer nodes regardless of branch conditions, causing incorrect stream processing. This change ensures that only nodes in the current conditional branch are collected by tracking and matching branch identifiers. - Add branch_identify parameter to track current branch context - Add condition check to only follow edges matching current branch - Skip edges with mismatched branch identifiers - > [!Tip] > Close issue syntax: `Fixes #<issue number>` or `Resolves #<issue number>`, see [documentation](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword) for more details. Fixes #11542 ![image](https://github.com/user-attachments/assets/3ff43dca-ba4c-410c-99fd-a5564f895a11) Fixes #9560 ![image](https://github.com/user-attachments/assets/e5beaa99-a2cb-4590-b14f-6957f8a283be) Fixes #10638 ![image](https://github.com/user-attachments/assets/ddc43841-e8a6-4563-b4f0-4fcdf2c87e4b) Fixes #10564 ![image](https://github.com/user-attachments/assets/b1ed318e-a7dc-413e-8272-9616feda3793) Also fixes #11985 (streaming output) # Screenshots | Before | After | |--------|-------| |![image](https://github.com/user-attachments/assets/d6e57bba-00ad-4b57-8392-d8a7d587c1bb) | ![image](https://github.com/user-attachments/assets/48af2076-a726-4fd5-98fd-a3fd07131083)| # Checklist > [!IMPORTANT] > Please review the checklist below before submitting your pull request. - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:41:57 -05:00
yindo closed this issue 2026-02-21 20:41:57 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#27660