From e399e84be66462f6be66af649cc4341248a47f09 Mon Sep 17 00:00:00 2001 From: Zihe JI Date: Tue, 20 May 2025 09:42:34 +0800 Subject: [PATCH] fix: ensure metadata is JSON serializable by applying jsonable_encoder (fixes #19936) --- .../sqlalchemy_workflow_node_execution_repository.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py index 3bf775db13..a49993fd58 100644 --- a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py +++ b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py @@ -11,6 +11,7 @@ from sqlalchemy import UnaryExpression, asc, delete, desc, select from sqlalchemy.engine import Engine from sqlalchemy.orm import sessionmaker +from core.model_runtime.utils.encoders import jsonable_encoder from core.workflow.entities.node_entities import NodeRunMetadataKey from core.workflow.entities.node_execution_entities import ( NodeExecution, @@ -171,7 +172,7 @@ class SQLAlchemyWorkflowNodeExecutionRepository(WorkflowNodeExecutionRepository) db_model.status = domain_model.status db_model.error = domain_model.error db_model.elapsed_time = domain_model.elapsed_time - db_model.execution_metadata = json.dumps(domain_model.metadata) if domain_model.metadata else None + db_model.execution_metadata = json.dumps(jsonable_encoder(domain_model.metadata)) if domain_model.metadata else None db_model.created_at = domain_model.created_at db_model.created_by_role = self._creator_user_role db_model.created_by = self._creator_user_id