mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Properly setup the additional sequences in the portdb script. (#16043)
The un_partial_stated_event_stream_sequence and application_services_txn_id_seq were never properly configured in the portdb script, resulting in an error on start-up.
This commit is contained in:
parent
5eb3fd785b
commit
90ad836ed8
1
changelog.d/16043.bugfix
Normal file
1
changelog.d/16043.bugfix
Normal file
@ -0,0 +1 @@
|
|||||||
|
Fix a long-standing bug where the `synapse_port_db` failed to configure sequences for application services and partial stated rooms.
|
@ -761,7 +761,7 @@ class Porter:
|
|||||||
|
|
||||||
# Step 2. Set up sequences
|
# Step 2. Set up sequences
|
||||||
#
|
#
|
||||||
# We do this before porting the tables so that event if we fail half
|
# We do this before porting the tables so that even if we fail half
|
||||||
# way through the postgres DB always have sequences that are greater
|
# way through the postgres DB always have sequences that are greater
|
||||||
# than their respective tables. If we don't then creating the
|
# than their respective tables. If we don't then creating the
|
||||||
# `DataStore` object will fail due to the inconsistency.
|
# `DataStore` object will fail due to the inconsistency.
|
||||||
@ -769,6 +769,10 @@ class Porter:
|
|||||||
await self._setup_state_group_id_seq()
|
await self._setup_state_group_id_seq()
|
||||||
await self._setup_user_id_seq()
|
await self._setup_user_id_seq()
|
||||||
await self._setup_events_stream_seqs()
|
await self._setup_events_stream_seqs()
|
||||||
|
await self._setup_sequence(
|
||||||
|
"un_partial_stated_event_stream_sequence",
|
||||||
|
("un_partial_stated_event_stream",),
|
||||||
|
)
|
||||||
await self._setup_sequence(
|
await self._setup_sequence(
|
||||||
"device_inbox_sequence", ("device_inbox", "device_federation_outbox")
|
"device_inbox_sequence", ("device_inbox", "device_federation_outbox")
|
||||||
)
|
)
|
||||||
@ -779,6 +783,11 @@ class Porter:
|
|||||||
await self._setup_sequence("receipts_sequence", ("receipts_linearized",))
|
await self._setup_sequence("receipts_sequence", ("receipts_linearized",))
|
||||||
await self._setup_sequence("presence_stream_sequence", ("presence_stream",))
|
await self._setup_sequence("presence_stream_sequence", ("presence_stream",))
|
||||||
await self._setup_auth_chain_sequence()
|
await self._setup_auth_chain_sequence()
|
||||||
|
await self._setup_sequence(
|
||||||
|
"application_services_txn_id_seq",
|
||||||
|
("application_services_txns",),
|
||||||
|
"txn_id",
|
||||||
|
)
|
||||||
|
|
||||||
# Step 3. Get tables.
|
# Step 3. Get tables.
|
||||||
self.progress.set_state("Fetching tables")
|
self.progress.set_state("Fetching tables")
|
||||||
@ -1083,7 +1092,10 @@ class Porter:
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def _setup_sequence(
|
async def _setup_sequence(
|
||||||
self, sequence_name: str, stream_id_tables: Iterable[str]
|
self,
|
||||||
|
sequence_name: str,
|
||||||
|
stream_id_tables: Iterable[str],
|
||||||
|
column_name: str = "stream_id",
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set a sequence to the correct value."""
|
"""Set a sequence to the correct value."""
|
||||||
current_stream_ids = []
|
current_stream_ids = []
|
||||||
@ -1093,7 +1105,7 @@ class Porter:
|
|||||||
await self.sqlite_store.db_pool.simple_select_one_onecol(
|
await self.sqlite_store.db_pool.simple_select_one_onecol(
|
||||||
table=stream_id_table,
|
table=stream_id_table,
|
||||||
keyvalues={},
|
keyvalues={},
|
||||||
retcol="COALESCE(MAX(stream_id), 1)",
|
retcol=f"COALESCE(MAX({column_name}), 1)",
|
||||||
allow_none=True,
|
allow_none=True,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user