From 440703481db14b27ea7620e26cc115c18d3f94ad Mon Sep 17 00:00:00 2001 From: yihong0618 Date: Thu, 19 Dec 2024 17:03:58 +0800 Subject: [PATCH] fix: droping self._remove_unreachable_nodes(event) to aviod if else short cut for answer node Signed-off-by: yihong0618 --- api/core/workflow/nodes/answer/answer_stream_processor.py | 6 +++++- .../core/workflow/graph_engine/test_graph_engine.py | 8 +++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/api/core/workflow/nodes/answer/answer_stream_processor.py b/api/core/workflow/nodes/answer/answer_stream_processor.py index d94f0590584842..e1bff3de488f4c 100644 --- a/api/core/workflow/nodes/answer/answer_stream_processor.py +++ b/api/core/workflow/nodes/answer/answer_stream_processor.py @@ -61,7 +61,11 @@ def process(self, generator: Generator[GraphEngineEvent, None, None]) -> Generat del self.current_stream_chunk_generating_node_ids[event.route_node_state.node_id] # remove unreachable nodes - self._remove_unreachable_nodes(event) + # 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 + # self._remove_unreachable_nodes(event) # generate stream outputs yield from self._generate_stream_outputs_when_node_finished(event) diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_graph_engine.py b/api/tests/unit_tests/core/workflow/graph_engine/test_graph_engine.py index 9f1ba7b6af9c80..29aa64d80145a5 100644 --- a/api/tests/unit_tests/core/workflow/graph_engine/test_graph_engine.py +++ b/api/tests/unit_tests/core/workflow/graph_engine/test_graph_engine.py @@ -488,16 +488,14 @@ def test_run_branch(mock_close, mock_remove): items = [] generator = graph_engine.run() for item in generator: - # print(type(item), item) items.append(item) assert len(items) == 10 assert items[3].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 items[5].chunk_content == "1 " - assert isinstance(items[6], NodeRunStreamChunkEvent) - assert items[6].chunk_content == "takato" + assert isinstance(items[8], NodeRunStreamChunkEvent) + # assert items[6].chunk_content == "takato" + assert items[8].chunk_content == "takato" assert items[7].route_node_state.node_id == "answer-1" assert items[8].route_node_state.node_id == "answer-1" assert items[8].route_node_state.node_run_result.outputs["answer"] == "1 takato"