mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-15 05:23:51 +01:00
Exclude outliers in on_backfill_request
(#12314)
When we are processing a `/backfill` request from a remote server, exclude any outliers from consideration early on. We can't return outliers anyway (since we don't know the state at the outlier), and filtering them out earlier means that we won't attempt to calulate the state for them.
This commit is contained in:
parent
ac95167d2f
commit
287a9c1e20
2 changed files with 10 additions and 3 deletions
1
changelog.d/12314.misc
Normal file
1
changelog.d/12314.misc
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Avoid trying to calculate the state at outlier events.
|
|
@ -1073,9 +1073,15 @@ class EventFederationWorkerStore(SignatureWorkerStore, EventsWorkerStore, SQLBas
|
||||||
/* Get the depth and stream_ordering of the prev_event_id from the events table */
|
/* Get the depth and stream_ordering of the prev_event_id from the events table */
|
||||||
INNER JOIN events
|
INNER JOIN events
|
||||||
ON prev_event_id = events.event_id
|
ON prev_event_id = events.event_id
|
||||||
|
|
||||||
|
/* exclude outliers from the results (we don't have the state, so cannot
|
||||||
|
* verify if the requesting server can see them).
|
||||||
|
*/
|
||||||
|
WHERE NOT events.outlier
|
||||||
|
|
||||||
/* Look for an edge which matches the given event_id */
|
/* Look for an edge which matches the given event_id */
|
||||||
WHERE event_edges.event_id = ?
|
AND event_edges.event_id = ? AND NOT event_edges.is_state
|
||||||
AND event_edges.is_state = ?
|
|
||||||
/* Because we can have many events at the same depth,
|
/* Because we can have many events at the same depth,
|
||||||
* we want to also tie-break and sort on stream_ordering */
|
* we want to also tie-break and sort on stream_ordering */
|
||||||
ORDER BY depth DESC, stream_ordering DESC
|
ORDER BY depth DESC, stream_ordering DESC
|
||||||
|
@ -1084,7 +1090,7 @@ class EventFederationWorkerStore(SignatureWorkerStore, EventsWorkerStore, SQLBas
|
||||||
|
|
||||||
txn.execute(
|
txn.execute(
|
||||||
connected_prev_event_query,
|
connected_prev_event_query,
|
||||||
(event_id, False, limit),
|
(event_id, limit),
|
||||||
)
|
)
|
||||||
return [
|
return [
|
||||||
BackfillQueueNavigationItem(
|
BackfillQueueNavigationItem(
|
||||||
|
|
Loading…
Reference in a new issue