Skip to content
Snippets Groups Projects
Commit 808f663e authored by Erik Johnston's avatar Erik Johnston
Browse files

Don't return state event outlier's when paginating.

parent 1317afcb
No related branches found
No related tags found
No related merge requests found
...@@ -105,6 +105,11 @@ class DataStore(RoomMemberStore, RoomStore, ...@@ -105,6 +105,11 @@ class DataStore(RoomMemberStore, RoomStore,
"processed": True, "processed": True,
} }
if hasattr(event, "outlier"):
vals["outlier"] = event.outlier
else:
vals["outlier"] = False
if backfilled: if backfilled:
if not self.min_token_deferred.called: if not self.min_token_deferred.called:
yield self.min_token_deferred yield self.min_token_deferred
...@@ -123,7 +128,7 @@ class DataStore(RoomMemberStore, RoomStore, ...@@ -123,7 +128,7 @@ class DataStore(RoomMemberStore, RoomStore,
except: except:
logger.exception( logger.exception(
"Failed to persist, probably duplicate: %s", "Failed to persist, probably duplicate: %s",
event_id event.event_id
) )
return return
......
...@@ -22,6 +22,7 @@ CREATE TABLE IF NOT EXISTS events( ...@@ -22,6 +22,7 @@ CREATE TABLE IF NOT EXISTS events(
content TEXT NOT NULL, content TEXT NOT NULL,
unrecognized_keys TEXT, unrecognized_keys TEXT,
processed BOOL NOT NULL, processed BOOL NOT NULL,
outlier BOOL NOT NULL,
CONSTRAINT ev_uniq UNIQUE (event_id) CONSTRAINT ev_uniq UNIQUE (event_id)
); );
......
...@@ -177,6 +177,7 @@ class StreamStore(SQLBaseStore): ...@@ -177,6 +177,7 @@ class StreamStore(SQLBaseStore):
"((room_id IN (%(current)s)) OR " "((room_id IN (%(current)s)) OR "
"(event_id IN (%(invites)s))) " "(event_id IN (%(invites)s))) "
"AND e.stream_ordering > ? AND e.stream_ordering < ? " "AND e.stream_ordering > ? AND e.stream_ordering < ? "
"AND e.outlier = 0 "
"ORDER BY stream_ordering ASC LIMIT %(limit)d " "ORDER BY stream_ordering ASC LIMIT %(limit)d "
) % { ) % {
"current": current_room_membership_sql, "current": current_room_membership_sql,
...@@ -224,7 +225,7 @@ class StreamStore(SQLBaseStore): ...@@ -224,7 +225,7 @@ class StreamStore(SQLBaseStore):
sql = ( sql = (
"SELECT * FROM events " "SELECT * FROM events "
"WHERE room_id = ? AND %(bounds)s " "WHERE outlier = 0 AND room_id = ? AND %(bounds)s "
"ORDER BY topological_ordering %(order)s, stream_ordering %(order)s %(limit)s " "ORDER BY topological_ordering %(order)s, stream_ordering %(order)s %(limit)s "
) % {"bounds": bounds, "order": order, "limit": limit_str} ) % {"bounds": bounds, "order": order, "limit": limit_str}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment