Ver código fonte

fix(update_provider_when_message_created): Fix db transaction (#21503)

Signed-off-by: -LAN- <laipz8200@outlook.com>
tags/1.5.0^0
-LAN- 4 meses atrás
pai
commit
3acaa59885
Nenhuma conta vinculada ao e-mail do autor do commit

+ 3
- 2
api/events/event_handlers/update_provider_when_message_created.py Ver arquivo

@@ -5,6 +5,7 @@ from typing import Any, Optional

from pydantic import BaseModel
from sqlalchemy import update
from sqlalchemy.orm import Session

from configs import dify_config
from core.app.entities.app_invoke_entities import AgentChatAppGenerateEntity, ChatAppGenerateEntity
@@ -183,7 +184,7 @@ def _execute_provider_updates(updates_to_perform: list[_ProviderUpdateOperation]

# Use SQLAlchemy's context manager for transaction management
# This automatically handles commit/rollback
with db.session.begin():
with Session(db.engine) as session:
# Use a single transaction for all updates
for update_operation in updates_to_perform:
filters = update_operation.filters
@@ -214,7 +215,7 @@ def _execute_provider_updates(updates_to_perform: list[_ProviderUpdateOperation]

# Build and execute the update statement
stmt = update(Provider).where(*where_conditions).values(**update_values)
result = db.session.execute(stmt)
result = session.execute(stmt)
rows_affected = result.rowcount

logger.debug(

Carregando…
Cancelar
Salvar