diff --git a/scripts-dev/complement.sh b/scripts-dev/complement.sh index 0b00e2f8ce..1e3bf357f7 100755 --- a/scripts-dev/complement.sh +++ b/scripts-dev/complement.sh @@ -65,4 +65,4 @@ if [[ -n "$1" ]]; then fi # Run the tests! -go test -v -tags synapse_blacklist,msc2946,msc3083,msc2716 -count=1 $EXTRA_COMPLEMENT_ARGS ./tests -run TestBackfillingHistory/parallel/Backfilled_historical_events_resolve_with_proper_state_in_correct_order +go test -v -tags synapse_blacklist,msc2946,msc3083,msc2716 -count=1 $EXTRA_COMPLEMENT_ARGS ./tests -run TestBackfillingHistory/parallel/Historical_messages_are_visible_when_joining_on_federated_server diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index e0ab9eca48..ecf401f938 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -1057,7 +1057,9 @@ class FederationHandler(BaseHandler): self, room_id: str, current_depth: int, limit: int ) -> bool: extremities = await self.store.get_oldest_events_with_depth_in_room(room_id) - logger.info("_maybe_backfill_inner extremities=%s", extremities) + logger.info( + "_maybe_backfill_inner extremities(%d)=%s", len(extremities), extremities + ) if not extremities: logger.debug("Not backfilling as no extremeties found.") diff --git a/synapse/storage/databases/main/event_federation.py b/synapse/storage/databases/main/event_federation.py index 522f1f364e..eda940c31b 100644 --- a/synapse/storage/databases/main/event_federation.py +++ b/synapse/storage/databases/main/event_federation.py @@ -657,20 +657,42 @@ class EventFederationWorkerStore(EventsWorkerStore, SignatureWorkerStore, SQLBas ) def get_oldest_events_with_depth_in_room_txn(self, txn, room_id): + # sql = ( + # "SELECT b.event_id, MAX(e.depth) FROM events as e" + # " INNER JOIN event_edges as g" + # " ON g.event_id = e.event_id" + # " INNER JOIN event_backward_extremities as b" + # " ON g.prev_event_id = b.event_id" + # # TODO + # # " INNER JOIN insertion_event_extremeties as i" + # # " ON g.event_id = i.insertion_prev_event_id" + # " WHERE b.room_id = ? AND g.is_state is ?" + # " GROUP BY b.event_id" + # ) + # txn.execute(sql, (room_id, False)) + + sqlAsdf = "SELECT * FROM insertion_event_extremeties as i" + txn.execute(sqlAsdf) + logger.info("wfeafewawafeawg %s", dict(txn)) + + sqlAsdf = "SELECT * FROM insertion_event_extremeties as i WHERE i.room_id = ?" + txn.execute(sqlAsdf, (room_id,)) + logger.info("awfeawefw %s", dict(txn)) + sql = ( - "SELECT b.event_id, MAX(e.depth) FROM events as e" - " INNER JOIN event_edges as g" - " ON g.event_id = e.event_id" - " INNER JOIN event_backward_extremities as b" - " ON g.prev_event_id = b.event_id" + "SELECT i.insertion_event_id, MAX(e.depth) FROM events as e" + # " INNER JOIN event_edges as g" + # " ON g.event_id = e.event_id" + # " INNER JOIN event_backward_extremities as b" + # " ON g.prev_event_id = b.event_id" # TODO - # " INNER JOIN insertion_event_extremeties as i" - # " ON g.event_id = i.insertion_prev_event_id" - " WHERE b.room_id = ? AND g.is_state is ?" - " GROUP BY b.event_id" + " INNER JOIN insertion_event_extremeties as i" + " ON e.event_id = i.insertion_prev_event_id" + " WHERE i.room_id = ?" + " GROUP BY i.insertion_event_id" ) - txn.execute(sql, (room_id, False)) + txn.execute(sql, (room_id,)) return dict(txn) @@ -923,6 +945,7 @@ class EventFederationWorkerStore(EventsWorkerStore, SignatureWorkerStore, SQLBas # We want to make sure that we do a breadth-first, "depth" ordered # search. + # TODO query = ( "SELECT depth, prev_event_id FROM event_edges" " INNER JOIN events"