fix: optimize trigger long running read transactions (#35046)

This commit is contained in:
hj24 2026-04-13 16:22:54 +08:00 committed by GitHub
parent fc64427ae1
commit 815c536e05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 8 deletions

View File

@ -29,14 +29,15 @@ class CreditPoolService:
@classmethod
def get_pool(cls, tenant_id: str, pool_type: str = "trial") -> TenantCreditPool | None:
"""get tenant credit pool"""
return db.session.scalar(
select(TenantCreditPool)
.where(
TenantCreditPool.tenant_id == tenant_id,
TenantCreditPool.pool_type == pool_type,
with sessionmaker(db.engine, expire_on_commit=False).begin() as session:
return session.scalar(
select(TenantCreditPool)
.where(
TenantCreditPool.tenant_id == tenant_id,
TenantCreditPool.pool_type == pool_type,
)
.limit(1)
)
.limit(1)
)
@classmethod
def check_credits_available(

View File

@ -162,7 +162,12 @@ def _execute_workflow_common(
state_owner_user_id=workflow.created_by,
)
# Execute the workflow with the trigger type
# NOTE (hj24)
# Release the transaction before the blocking generate() call,
# otherwise the connection stays "idle in transaction" for hours.
session.commit()
# NOTE END
generator.generate(
app_model=app_model,
workflow=workflow,