diff options
author | Andrew Morgan <1342360+anoadragon453@users.noreply.github.com> | 2022-03-30 12:10:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-30 11:10:12 +0000 |
commit | c8cbd66d3ba6a6212c0934fcb9aa9b791797c269 (patch) | |
tree | 0246f10fe8bdac37a55891412be8f1c514dbaf7b | |
parent | Disable proactive sends for remote joins (#12330) (diff) | |
download | synapse-c8cbd66d3ba6a6212c0934fcb9aa9b791797c269.tar.xz |
Start application service stream token tracking from 1 (#12193)
Co-authored-by: Erik Johnston <erik@matrix.org>
-rw-r--r-- | changelog.d/12193.misc | 1 | ||||
-rw-r--r-- | synapse/handlers/presence.py | 2 | ||||
-rw-r--r-- | synapse/storage/databases/main/appservice.py | 3 | ||||
-rw-r--r-- | tests/storage/test_appservice.py | 4 |
4 files changed, 6 insertions, 4 deletions
diff --git a/changelog.d/12193.misc b/changelog.d/12193.misc new file mode 100644 index 0000000000..a721254d22 --- /dev/null +++ b/changelog.d/12193.misc @@ -0,0 +1 @@ +Omit sending "offline" presence updates to application services after they are initially configured. \ No newline at end of file diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index 34d9411bbf..dace31d87e 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -1625,7 +1625,7 @@ class PresenceEventSource(EventSource[int, UserPresenceState]): # We'll actually pull the presence updates for these users at the end. interested_and_updated_users: Union[Set[str], FrozenSet[str]] = set() - if from_key: + if from_key is not None: # First get all users that have had a presence update updated_users = stream_change_cache.get_all_entities_changed(from_key) diff --git a/synapse/storage/databases/main/appservice.py b/synapse/storage/databases/main/appservice.py index 0694446558..abea4383c7 100644 --- a/synapse/storage/databases/main/appservice.py +++ b/synapse/storage/databases/main/appservice.py @@ -446,7 +446,8 @@ class ApplicationServiceTransactionWorkerStore( ) last_stream_id = txn.fetchone() if last_stream_id is None or last_stream_id[0] is None: # no row exists - return 0 + # Stream tokens always start from 1, to avoid foot guns around `0` being falsey. + return 1 else: return int(last_stream_id[0]) diff --git a/tests/storage/test_appservice.py b/tests/storage/test_appservice.py index ee599f4336..6249eb8c11 100644 --- a/tests/storage/test_appservice.py +++ b/tests/storage/test_appservice.py @@ -476,12 +476,12 @@ class ApplicationServiceStoreTypeStreamIds(unittest.HomeserverTestCase): value = self.get_success( self.store.get_type_stream_id_for_appservice(self.service, "read_receipt") ) - self.assertEqual(value, 0) + self.assertEqual(value, 1) value = self.get_success( self.store.get_type_stream_id_for_appservice(self.service, "presence") ) - self.assertEqual(value, 0) + self.assertEqual(value, 1) def test_get_type_stream_id_for_appservice_invalid_type(self) -> None: self.get_failure( |