Merge pull request 'Allow current-region takeover of empty draining locks' (#14) from feature/account-lock-session-end-fix into main

Reviewed-on: #14
This commit was merged in pull request #14.
This commit is contained in:
2026-06-15 14:54:58 -04:00
+14 -4
View File
@@ -712,7 +712,18 @@ def newserv_account_lock_acquire():
"lock": lock_row_payload(row),
})
sessions = row["sessions"] or {}
if isinstance(sessions, str):
sessions = json.loads(sessions)
if row["holder_source"] != source:
target_region_current = False
if row["state"] == "draining" and not sessions and source_region:
_all_current, sync = account_sync_current_on_all_regions(account_id)
region_status = (sync.get("regions") or {}).get(source_region) or {}
target_region_current = region_status.get("status") == "current"
if not target_region_current:
return jsonify({
"ok": False,
"message": f"$C6Account is already active\\non {row['holder_source']}.",
@@ -721,14 +732,12 @@ def newserv_account_lock_acquire():
"lock": lock_row_payload(row),
})
sessions = row["sessions"] or {}
if isinstance(sessions, str):
sessions = json.loads(sessions)
sessions[session_nonce] = session_info
cur.execute("""
UPDATE account_session_locks
SET state = 'active',
SET holder_source = %s,
state = 'active',
source_region = %s,
source_ship = %s,
account_store = %s,
@@ -739,6 +748,7 @@ def newserv_account_lock_acquire():
RETURNING account_id, holder_source, source_region, source_ship,
account_store, state, sessions, created_at, updated_at, expires_at
""", (
source,
source_region,
source_ship,
account_store,