Browse Source

fix(api): fix relations of WorkflowNodeExecutionModel not preloaded

`WorkflowNodeExecutionModel.offload_data` should be preloaded to
provide info about the offloading information of execution record.

The `RagPipelineService.get_node_last_run` does not utilize
`DifyAPISQLAlchemyWorkflowNodeExecutionRepository` so the loading
logics is not changed.

In the commit we migrate to calling
`DifyAPISQLAlchemyWorkflowNodeExecutionRepository` to avoid such issue.
tags/2.0.0-beta.1
QuantumGhost 2 months ago
parent
commit
d2e341367e
1 changed files with 8 additions and 11 deletions
  1. 8
    11
      api/services/rag_pipeline/rag_pipeline.py

+ 8
- 11
api/services/rag_pipeline/rag_pipeline.py View File

def get_node_last_run( def get_node_last_run(
self, pipeline: Pipeline, workflow: Workflow, node_id: str self, pipeline: Pipeline, workflow: Workflow, node_id: str
) -> WorkflowNodeExecutionModel | None: ) -> WorkflowNodeExecutionModel | None:
# TODO(QuantumGhost): This query is not fully covered by index.
criteria = (
WorkflowNodeExecutionModel.tenant_id == pipeline.tenant_id,
WorkflowNodeExecutionModel.app_id == pipeline.id,
WorkflowNodeExecutionModel.workflow_id == workflow.id,
WorkflowNodeExecutionModel.node_id == node_id,
node_execution_service_repo = DifyAPIRepositoryFactory.create_api_workflow_node_execution_repository(
sessionmaker(db.engine)
) )
node_exec = (
db.session.query(WorkflowNodeExecutionModel)
.filter(*criteria)
.order_by(WorkflowNodeExecutionModel.created_at.desc())
.first()

node_exec = node_execution_service_repo.get_node_last_execution(
tenant_id=pipeline.tenant_id,
app_id=pipeline.id,
workflow_id=workflow.id,
node_id=node_id,
) )
return node_exec return node_exec



Loading…
Cancel
Save