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:
+20
-10
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user