summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-03-23 11:36:52 +0000
committerAndrew Morgan <andrew@amorgan.xyz>2020-03-23 11:36:52 +0000
commitf2df9692a9dafbca1889bb8fe92fdc22e395f2d0 (patch)
tree93c2e4220f31a78792e7555dc487ed3fe4784edf
parentMerge pull request #6724 from matrix-org/rav/log_saml_attributes (diff)
parentMerge pull request #6714 from matrix-org/babolivier/retention_select_event (diff)
downloadsynapse-f2df9692a9dafbca1889bb8fe92fdc22e395f2d0.tar.xz
Merge pull request #6714 from matrix-org/babolivier/retention_select_event
* commit '3b72bb780':
  bump version to v1.9.0.dev1
  Precise changelog
  Fixup diff
  Remove get_room_event_after_stream_ordering entirely
  Lint
  Rename changelog
  Changelog
  Correctly order when selecting before stream ordering
  Fix typo
  Fix instantiation of message retention purge jobs
-rw-r--r--changelog.d/6714.bugfix1
-rw-r--r--synapse/__init__.py2
-rw-r--r--synapse/handlers/pagination.py2
-rw-r--r--synapse/rest/admin/__init__.py2
-rw-r--r--synapse/storage/data_stores/main/stream.py10
5 files changed, 9 insertions, 8 deletions
diff --git a/changelog.d/6714.bugfix b/changelog.d/6714.bugfix
new file mode 100644

index 0000000000..410516694f --- /dev/null +++ b/changelog.d/6714.bugfix
@@ -0,0 +1 @@ +Fix a bug causing Synapse to not always purge quiet rooms with a low `max_lifetime` in their message retention policies when running the automated purge jobs. diff --git a/synapse/__init__.py b/synapse/__init__.py
index 0dd538d804..abd5297390 100644 --- a/synapse/__init__.py +++ b/synapse/__init__.py
@@ -36,7 +36,7 @@ try: except ImportError: pass -__version__ = "1.8.0" +__version__ = "1.9.0.dev1" if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)): # We import here so that we don't have to install a bunch of deps when diff --git a/synapse/handlers/pagination.py b/synapse/handlers/pagination.py
index 00a6afc963..3ee6a091c5 100644 --- a/synapse/handlers/pagination.py +++ b/synapse/handlers/pagination.py
@@ -156,7 +156,7 @@ class PaginationHandler(object): stream_ordering = yield self.store.find_first_stream_ordering_after_ts(ts) - r = yield self.store.get_room_event_after_stream_ordering( + r = yield self.store.get_room_event_before_stream_ordering( room_id, stream_ordering, ) if not r: diff --git a/synapse/rest/admin/__init__.py b/synapse/rest/admin/__init__.py
index a10b4a9b72..2932fe2123 100644 --- a/synapse/rest/admin/__init__.py +++ b/synapse/rest/admin/__init__.py
@@ -107,7 +107,7 @@ class PurgeHistoryRestServlet(RestServlet): stream_ordering = await self.store.find_first_stream_ordering_after_ts(ts) - r = await self.store.get_room_event_after_stream_ordering( + r = await self.store.get_room_event_before_stream_ordering( room_id, stream_ordering ) if not r: diff --git a/synapse/storage/data_stores/main/stream.py b/synapse/storage/data_stores/main/stream.py
index 140da8dad6..056b25b13a 100644 --- a/synapse/storage/data_stores/main/stream.py +++ b/synapse/storage/data_stores/main/stream.py
@@ -525,8 +525,8 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore): return rows, token - def get_room_event_after_stream_ordering(self, room_id, stream_ordering): - """Gets details of the first event in a room at or after a stream ordering + def get_room_event_before_stream_ordering(self, room_id, stream_ordering): + """Gets details of the first event in a room at or before a stream ordering Args: room_id (str): @@ -541,15 +541,15 @@ class StreamWorkerStore(EventsWorkerStore, SQLBaseStore): sql = ( "SELECT stream_ordering, topological_ordering, event_id" " FROM events" - " WHERE room_id = ? AND stream_ordering >= ?" + " WHERE room_id = ? AND stream_ordering <= ?" " AND NOT outlier" - " ORDER BY stream_ordering" + " ORDER BY stream_ordering DESC" " LIMIT 1" ) txn.execute(sql, (room_id, stream_ordering)) return txn.fetchone() - return self.db.runInteraction("get_room_event_after_stream_ordering", _f) + return self.db.runInteraction("get_room_event_before_stream_ordering", _f) @defer.inlineCallbacks def get_room_events_max_id(self, room_id=None):