diff --git a/api/core/rag/embedding/cached_embedding.py b/api/core/rag/embedding/cached_embedding.py
index 5f94129a0c..c2f17cd148 100644
--- a/api/core/rag/embedding/cached_embedding.py
+++ b/api/core/rag/embedding/cached_embedding.py
@@ -42,6 +42,10 @@ class CacheEmbedding(Embeddings):
text_embeddings[i] = embedding.get_embedding()
else:
embedding_queue_indices.append(i)
+
+ # release database connection, because embedding may take a long time
+ db.session.close()
+
if embedding_queue_indices:
embedding_queue_texts = [texts[i] for i in embedding_queue_indices]
embedding_queue_embeddings = []
diff --git a/api/core/workflow/graph_engine/response_coordinator/coordinator.py b/api/core/workflow/graph_engine/response_coordinator/coordinator.py
index 985992f3f1..3db40c545e 100644
--- a/api/core/workflow/graph_engine/response_coordinator/coordinator.py
+++ b/api/core/workflow/graph_engine/response_coordinator/coordinator.py
@@ -212,10 +212,11 @@ class ResponseStreamCoordinator:
edge = self._graph.edges[edge_id]
source_node = self._graph.nodes[edge.tail]
- # Check if node is a branch/container (original behavior)
+ # Check if node is a branch, container, or response node
if source_node.execution_type in {
NodeExecutionType.BRANCH,
NodeExecutionType.CONTAINER,
+ NodeExecutionType.RESPONSE,
} or source_node.blocks_variable_output(variable_selectors):
blocking_edges.append(edge_id)
diff --git a/api/core/workflow/variable_loader.py b/api/core/workflow/variable_loader.py
index a35215855e..1b31022495 100644
--- a/api/core/workflow/variable_loader.py
+++ b/api/core/workflow/variable_loader.py
@@ -66,8 +66,8 @@ def load_into_variable_pool(
# NOTE(QuantumGhost): this logic needs to be in sync with
# `WorkflowEntry.mapping_user_inputs_to_variable_pool`.
node_variable_list = key.split(".")
- if len(node_variable_list) < 1:
- raise ValueError(f"Invalid variable key: {key}. It should have at least one element.")
+ if len(node_variable_list) < 2:
+ raise ValueError(f"Invalid variable key: {key}. It should have at least two elements.")
if key in user_inputs:
continue
node_variable_key = ".".join(node_variable_list[1:])
diff --git a/web/__tests__/document-detail-navigation-fix.test.tsx b/web/__tests__/document-detail-navigation-fix.test.tsx
index 200ed09ea9..a358744998 100644
--- a/web/__tests__/document-detail-navigation-fix.test.tsx
+++ b/web/__tests__/document-detail-navigation-fix.test.tsx
@@ -54,7 +54,7 @@ const DocumentDetailWithFix = ({ datasetId, documentId }: { datasetId: string; d
return (