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),
|
"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 {}
|
sessions = row["sessions"] or {}
|
||||||
if isinstance(sessions, str):
|
if isinstance(sessions, str):
|
||||||
sessions = json.loads(sessions)
|
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
|
sessions[session_nonce] = session_info
|
||||||
|
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
UPDATE account_session_locks
|
UPDATE account_session_locks
|
||||||
SET state = 'active',
|
SET holder_source = %s,
|
||||||
|
state = 'active',
|
||||||
source_region = %s,
|
source_region = %s,
|
||||||
source_ship = %s,
|
source_ship = %s,
|
||||||
account_store = %s,
|
account_store = %s,
|
||||||
@@ -739,6 +748,7 @@ def newserv_account_lock_acquire():
|
|||||||
RETURNING account_id, holder_source, source_region, source_ship,
|
RETURNING account_id, holder_source, source_region, source_ship,
|
||||||
account_store, state, sessions, created_at, updated_at, expires_at
|
account_store, state, sessions, created_at, updated_at, expires_at
|
||||||
""", (
|
""", (
|
||||||
|
source,
|
||||||
source_region,
|
source_region,
|
||||||
source_ship,
|
source_ship,
|
||||||
account_store,
|
account_store,
|
||||||
|
|||||||
Reference in New Issue
Block a user