fix: issue Multiple Paths Between IF/ELSE Branches (#11646)
Signed-off-by: yihong0618 <zouzou0208@gmail.com>
This commit is contained in:
parent
c3c85276d1
commit
e0f1410b48
@ -60,7 +60,6 @@ class AnswerStreamProcessor(StreamProcessor):
|
|||||||
|
|
||||||
del self.current_stream_chunk_generating_node_ids[event.route_node_state.node_id]
|
del self.current_stream_chunk_generating_node_ids[event.route_node_state.node_id]
|
||||||
|
|
||||||
# remove unreachable nodes
|
|
||||||
self._remove_unreachable_nodes(event)
|
self._remove_unreachable_nodes(event)
|
||||||
|
|
||||||
# generate stream outputs
|
# generate stream outputs
|
||||||
|
@ -43,7 +43,13 @@ class StreamProcessor(ABC):
|
|||||||
and edge.run_condition.branch_identify
|
and edge.run_condition.branch_identify
|
||||||
and run_result.edge_source_handle == edge.run_condition.branch_identify
|
and run_result.edge_source_handle == edge.run_condition.branch_identify
|
||||||
):
|
):
|
||||||
reachable_node_ids.extend(self._fetch_node_ids_in_reachable_branch(edge.target_node_id))
|
# remove unreachable nodes
|
||||||
|
# FIXME: because of the code branch can combine directly, so for answer node
|
||||||
|
# we remove the node maybe shortcut the answer node, so comment this code for now
|
||||||
|
# there is not effect on the answer node and the workflow, when we have a better solution
|
||||||
|
# we can open this code. Issues: #11542 #9560 #10638 #10564
|
||||||
|
|
||||||
|
# reachable_node_ids.extend(self._fetch_node_ids_in_reachable_branch(edge.target_node_id))
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
unreachable_first_node_ids.append(edge.target_node_id)
|
unreachable_first_node_ids.append(edge.target_node_id)
|
||||||
|
@ -488,14 +488,12 @@ def test_run_branch(mock_close, mock_remove):
|
|||||||
items = []
|
items = []
|
||||||
generator = graph_engine.run()
|
generator = graph_engine.run()
|
||||||
for item in generator:
|
for item in generator:
|
||||||
# print(type(item), item)
|
|
||||||
items.append(item)
|
items.append(item)
|
||||||
|
|
||||||
assert len(items) == 10
|
assert len(items) == 10
|
||||||
assert items[3].route_node_state.node_id == "if-else-1"
|
assert items[3].route_node_state.node_id == "if-else-1"
|
||||||
assert items[4].route_node_state.node_id == "if-else-1"
|
assert items[4].route_node_state.node_id == "if-else-1"
|
||||||
assert isinstance(items[5], NodeRunStreamChunkEvent)
|
assert isinstance(items[5], NodeRunStreamChunkEvent)
|
||||||
assert items[5].chunk_content == "1 "
|
|
||||||
assert isinstance(items[6], NodeRunStreamChunkEvent)
|
assert isinstance(items[6], NodeRunStreamChunkEvent)
|
||||||
assert items[6].chunk_content == "takato"
|
assert items[6].chunk_content == "takato"
|
||||||
assert items[7].route_node_state.node_id == "answer-1"
|
assert items[7].route_node_state.node_id == "answer-1"
|
||||||
|
Loading…
Reference in New Issue
Block a user