Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
4fd17d4
MSC4140: finalised delayed events, and more
AndrewFerr Oct 10, 2025
bc0e1a3
Add changelog
AndrewFerr Oct 10, 2025
4a7e78c
Work around Postgres-only error
AndrewFerr Oct 10, 2025
99f8501
Rename experimental config per suggestion
AndrewFerr Oct 31, 2025
96ed87a
Add description comment to new table
AndrewFerr Oct 31, 2025
2ec54e4
Merge finalised_delayed_events into delayed_events
AndrewFerr Nov 1, 2025
048508c
Merge with 'develop': PEP585 and always RETURNING
AndrewFerr Nov 1, 2025
095eda4
Merge with 'develop': Python 3.14 support
AndrewFerr Nov 3, 2025
5cd80ed
Add finalised_ts index in background
AndrewFerr Nov 3, 2025
11c79c2
Include DelayedEventsStore in migrated DB stores
AndrewFerr Nov 3, 2025
d2aba30
Fix error code string
AndrewFerr Nov 3, 2025
e5bef01
Run UPDATE in transaction, and check rowcount
AndrewFerr Nov 3, 2025
6a5369b
Merge with 'develop': PEP604
AndrewFerr Nov 6, 2025
9a345ce
Don't fetch after UPDATE queries
AndrewFerr Nov 7, 2025
98fa5aa
Add missing return type annotation
AndrewFerr Nov 7, 2025
25ca333
Update schema change comment
AndrewFerr Nov 7, 2025
e0c412d
Remove mistaken WHERE condition
AndrewFerr Nov 12, 2025
60549ab
Add ordering info to background update
AndrewFerr Nov 13, 2025
f1383cc
Merge with 'develop' before #19152
AndrewFerr Nov 14, 2025
274d1cf
Merge with #19152
AndrewFerr Nov 14, 2025
9444a71
Bump schema change number/order
AndrewFerr Nov 14, 2025
4de1de6
Fix mistake in DELETE query
AndrewFerr Nov 14, 2025
151e820
Merge with 'develop'
AndrewFerr Nov 14, 2025
b36becc
Return most recent finalised events first
AndrewFerr Nov 14, 2025
c9eb467
Removed leading "finalised_" from object fields
AndrewFerr Nov 14, 2025
7497cb5
Raise errors on manual send of delayed event
AndrewFerr Nov 24, 2025
ded80f4
Merge with 'develop'
AndrewFerr Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion synapse/storage/databases/main/delayed_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@

import logging
from http import HTTPStatus
from typing import NewType, Optional, Union
from typing import TYPE_CHECKING, NewType, Optional, Union

import attr

from synapse.api.errors import NotFoundError, SynapseError, cs_error
from synapse.storage._base import SQLBaseStore, db_to_json
from synapse.storage.database import (
DatabasePool,
LoggingDatabaseConnection,
LoggingTransaction,
make_in_list_sql_clause,
)
Expand All @@ -29,6 +31,9 @@
from synapse.util import stringutils
from synapse.util.json import json_encoder

if TYPE_CHECKING:
from synapse.server import HomeServer

logger = logging.getLogger(__name__)


Expand Down Expand Up @@ -59,6 +64,21 @@ class DelayedEventDetails(EventDetails):


class DelayedEventsStore(SQLBaseStore):
def __init__(
self,
database: DatabasePool,
db_conn: LoggingDatabaseConnection,
hs: "HomeServer",
):
super().__init__(database, db_conn, hs)

self.db_pool.updates.register_background_index_update(
update_name="delayed_events_finalised_ts",
index_name="delayed_events_finalised_ts",
table="delayed_events",
columns=("finalised_ts",),
)

async def get_delayed_events_stream_pos(self) -> int:
"""
Gets the stream position of the background process to watch for state events
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ ALTER TABLE delayed_events ADD COLUMN finalised_error bytea;
ALTER TABLE delayed_events ADD COLUMN finalised_event_id TEXT;
ALTER TABLE delayed_events ADD COLUMN finalised_ts BIGINT;

CREATE INDEX delayed_events_finalised_ts ON delayed_events (finalised_ts);
INSERT INTO background_updates (update_name, progress_json) VALUES
('delayed_events_finalised_ts', '{}');
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This had to be added to pass the check-schema-delta job.

Given that this is an index on a new, null-by-default column, is there really a need to add it in the background?

Loading