From b2c582dc5ab7dbff7256f1daab346096d77f1dfb Mon Sep 17 00:00:00 2001 From: WeiCHEN Date: Wed, 23 Sep 2026 16:29:12 +0800 Subject: [PATCH] fix(agentctl): re-lock write txn after schema DDL for claim CAS --- scripts/agentctl.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scripts/agentctl.py b/scripts/agentctl.py index 956888d2..c3b2b6ff 100755 --- a/scripts/agentctl.py +++ b/scripts/agentctl.py @@ -588,13 +588,18 @@ class Repo: db.execute('PRAGMA busy_timeout=5000') if write: db.execute('PRAGMA synchronous=FULL') + # DDL inside ensure_schema implicitly commits any open txn; take the + # exclusive lock only after schema is stable so claim/lease CAS holds. db.execute('BEGIN IMMEDIATE') ensure_schema(db) + if db.in_transaction: + db.execute('COMMIT') + db.execute('BEGIN IMMEDIATE') yield db - if write: + if write and db.in_transaction: db.commit() except BaseException: - if write: + if write and db.in_transaction: db.rollback() raise finally: