Sfoglia il codice sorgente

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 mesi fa
parent
commit
d2e341367e
1 ha cambiato i file con 8 aggiunte e 11 eliminazioni
  1. 8
    11
      api/services/rag_pipeline/rag_pipeline.py

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

@@ -1162,18 +1162,15 @@ class RagPipelineService:
def get_node_last_run(
self, pipeline: Pipeline, workflow: Workflow, node_id: str
) -> 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


Loading…
Annulla
Salva