Compare commits

...

2 Commits

Author SHA1 Message Date
Your Name 48890f96b4 Allow current-region takeover of empty draining locks 2026-06-14 03:54:39 -04:00
Your Name 5e663c68be change draining state 2026-06-14 03:28:16 -04:00
+21 -11
View File
@@ -712,23 +712,32 @@ def newserv_account_lock_acquire():
"lock": lock_row_payload(row),
})
if row["holder_source"] != source:
return jsonify({
"ok": False,
"message": f"$C6Account is already active\\non {row['holder_source']}.",
"holder_source": row["holder_source"],
"state": row["state"],
"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']}.",
"holder_source": row["holder_source"],
"state": row["state"],
"lock": lock_row_payload(row),
})
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,
@@ -780,7 +790,7 @@ def newserv_account_lock_heartbeat():
SET updated_at = now(),
expires_at = %s
WHERE holder_source = %s
AND state IN ('active', 'draining')
AND state = 'active'
""", (expires_at, source))
refreshed = cur.rowcount