mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-09-11 00:14:00 +00:00
fix(multiplayer): validate legacy connection leases
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
-- Migration 0011 used NOT VALID so the new check protected concurrent writes
|
||||
-- while its backfill completed. Validate separately so an upgraded database
|
||||
-- cannot silently retain an impossible pre-lease connection state.
|
||||
ALTER TABLE match_participants
|
||||
VALIDATE CONSTRAINT match_participants_connection_lease;
|
||||
@@ -0,0 +1 @@
|
||||
-- Constraint validation changes no schema and is intentionally irreversible.
|
||||
@@ -10,6 +10,7 @@ QUOTAS_SQL = (Path(__file__).parent / "0007_allocation_quotas.sql").read_text()
|
||||
ARENAS_SQL = (Path(__file__).parent / "0008_match_arena_paths.sql").read_text()
|
||||
ALLOCATION_ARENAS_SQL = (Path(__file__).parent / "0009_allocation_arena_paths.sql").read_text()
|
||||
INITIAL_CONNECT_READY_SQL = (Path(__file__).parent / "0010_initial_connect_ready_at.sql").read_text()
|
||||
CONNECTION_LEASE_VALIDATION_SQL = (Path(__file__).parent / "0012_validate_connection_leases.sql").read_text()
|
||||
|
||||
|
||||
class MigrationTest(unittest.TestCase):
|
||||
@@ -78,6 +79,9 @@ class MigrationTest(unittest.TestCase):
|
||||
self.assertIn("ADD COLUMN initial_connect_ready_at TIMESTAMPTZ", INITIAL_CONNECT_READY_SQL)
|
||||
self.assertIn("state IN ('ASSIGNMENT_READY', 'ASSIGNED', 'CONNECTING')", INITIAL_CONNECT_READY_SQL)
|
||||
|
||||
def test_connection_lease_backfill_is_validated_for_legacy_rows(self):
|
||||
self.assertIn("VALIDATE CONSTRAINT match_participants_connection_lease", CONNECTION_LEASE_VALIDATION_SQL)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user