chore(remove_app_and_related_data_task): Revert _delete_app_workflow_node_executions (#20278)

Signed-off-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
-LAN- 2025-05-27 14:58:08 +08:00 committed by GitHub
parent 4c4887c5fc
commit 275b042998
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,16 +4,12 @@ from collections.abc import Callable
import click import click
from celery import shared_task # type: ignore from celery import shared_task # type: ignore
from sqlalchemy import delete, select from sqlalchemy import delete
from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.exc import SQLAlchemyError
from sqlalchemy.orm import Session
from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository
from extensions.ext_database import db from extensions.ext_database import db
from models import ( from models import (
Account,
ApiToken, ApiToken,
App,
AppAnnotationHitHistory, AppAnnotationHitHistory,
AppAnnotationSetting, AppAnnotationSetting,
AppDatasetJoin, AppDatasetJoin,
@ -34,7 +30,7 @@ from models import (
) )
from models.tools import WorkflowToolProvider from models.tools import WorkflowToolProvider
from models.web import PinnedConversation, SavedMessage from models.web import PinnedConversation, SavedMessage
from models.workflow import ConversationVariable, Workflow, WorkflowAppLog, WorkflowRun from models.workflow import ConversationVariable, Workflow, WorkflowAppLog, WorkflowNodeExecution, WorkflowRun
@shared_task(queue="app_deletion", bind=True, max_retries=3) @shared_task(queue="app_deletion", bind=True, max_retries=3)
@ -191,31 +187,18 @@ def _delete_app_workflow_runs(tenant_id: str, app_id: str):
def _delete_app_workflow_node_executions(tenant_id: str, app_id: str): def _delete_app_workflow_node_executions(tenant_id: str, app_id: str):
# Get app's owner def del_workflow_node_execution(workflow_node_execution_id: str):
with Session(db.engine, expire_on_commit=False) as session: db.session.query(WorkflowNodeExecution).filter(WorkflowNodeExecution.id == workflow_node_execution_id).delete(
stmt = select(Account).where(Account.id == App.created_by).where(App.id == app_id) synchronize_session=False
user = session.scalar(stmt)
if user is None:
errmsg = (
f"Failed to delete workflow node executions for tenant {tenant_id} and app {app_id}, app's owner not found"
) )
logging.error(errmsg)
raise ValueError(errmsg)
# Create a repository instance for WorkflowNodeExecution _delete_records(
repository = SQLAlchemyWorkflowNodeExecutionRepository( """select id from workflow_node_executions where tenant_id=:tenant_id and app_id=:app_id limit 1000""",
session_factory=db.engine, {"tenant_id": tenant_id, "app_id": app_id},
user=user, del_workflow_node_execution,
app_id=app_id, "workflow node execution",
triggered_from=None,
) )
# Use the clear method to delete all records for this tenant_id and app_id
repository.clear()
logging.info(click.style(f"Deleted workflow node executions for tenant {tenant_id} and app {app_id}", fg="green"))
def _delete_app_workflow_app_logs(tenant_id: str, app_id: str): def _delete_app_workflow_app_logs(tenant_id: str, app_id: str):
def del_workflow_app_log(workflow_app_log_id: str): def del_workflow_app_log(workflow_app_log_id: str):