summary refs log tree commit diff
diff options
context:
space:
mode:
authorSean Quah <seanq@element.io>2021-10-20 11:06:51 +0100
committerSean Quah <seanq@element.io>2021-10-20 11:06:51 +0100
commitc59b9711f316583e81d8c1f40eb49000d9e0e690 (patch)
tree014a40e0334dc4dde84accc8ac1b23db5194202f
parentMerge branch 'release-v1.45' of github.com:matrix-org/synapse into matrix-org... (diff)
parentRevert change to counting of deactivated users towards the monthly active use... (diff)
downloadsynapse-c59b9711f316583e81d8c1f40eb49000d9e0e690.tar.xz
Merge branch 'release-v1.45' of github.com:matrix-org/synapse into matrix-org-hotfixes
-rw-r--r--CHANGES.md56
-rw-r--r--changelog.d/10825.misc1
-rw-r--r--changelog.d/10970.misc1
-rw-r--r--changelog.d/10996.misc1
-rw-r--r--changelog.d/11036.misc1
-rw-r--r--changelog.d/11045.bugfix1
-rw-r--r--changelog.d/11053.bugfix2
-rw-r--r--changelog.d/11061.bugfix1
-rw-r--r--changelog.d/11127.bugfix1
-rw-r--r--debian/changelog12
-rw-r--r--synapse/__init__.py2
-rw-r--r--synapse/handlers/deactivate_account.py4
-rw-r--r--synapse/storage/databases/main/monthly_active_users.py24
-rw-r--r--tests/test_mau.py37
14 files changed, 71 insertions, 73 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 5acc8b537e..435387d7b0 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,9 +1,61 @@
+Synapse 1.45.0 (2021-10-19)
+===========================
+
+No functional changes since Synapse 1.45.0rc2.
+
+Known Issues
+------------
+
+- A suspected [performance regression](https://github.com/matrix-org/synapse/issues/11049) which was first reported after the release of 1.44.0 remains unresolved.
+
+  We have not been able to identify a probable cause. Affected users report that setting up a federation sender worker appears to alleviate symptoms of the regression.
+
+Improved Documentation
+----------------------
+
+- Reword changelog to clarify concerns about a suspected performance regression in 1.44.0. ([\#11117](https://github.com/matrix-org/synapse/issues/11117))
+
+
+Synapse 1.45.0rc2 (2021-10-14)
+==============================
+
+This release candidate [fixes](https://github.com/matrix-org/synapse/issues/11053) a user directory [bug](https://github.com/matrix-org/synapse/issues/11025) present in 1.45.0rc1.
+
+Known Issues
+------------
+
+- A suspected [performance regression](https://github.com/matrix-org/synapse/issues/11049) which was first reported after the release of 1.44.0 remains unresolved.
+
+  We have not been able to identify a probable cause. Affected users report that setting up a federation sender worker appears to alleviate symptoms of the regression.
+
+Bugfixes
+--------
+
+- Fix a long-standing bug when using multiple event persister workers where events were not correctly sent down `/sync` due to a race. ([\#11045](https://github.com/matrix-org/synapse/issues/11045))
+- Fix a bug introduced in Synapse 1.45.0rc1 where the user directory would stop updating if it processed an event from a
+  user not in the `users` table. ([\#11053](https://github.com/matrix-org/synapse/issues/11053))
+- Fix a bug introduced in Synapse 1.44.0 when logging errors during oEmbed processing. ([\#11061](https://github.com/matrix-org/synapse/issues/11061))
+
+
+Internal Changes
+----------------
+
+- Add an 'approximate difference' method to `StateFilter`. ([\#10825](https://github.com/matrix-org/synapse/issues/10825))
+- Fix inconsistent behavior of `get_last_client_by_ip` when reporting data that has not been stored in the database yet. ([\#10970](https://github.com/matrix-org/synapse/issues/10970))
+- Fix a bug introduced in Synapse 1.21.0 that causes opentracing and Prometheus metrics for replication requests to be measured incorrectly. ([\#10996](https://github.com/matrix-org/synapse/issues/10996))
+- Ensure that cache config tests do not share state. ([\#11036](https://github.com/matrix-org/synapse/issues/11036))
+
+
 Synapse 1.45.0rc1 (2021-10-12)
 ==============================
 
-**Note:** We are aware of [a performance issue](https://github.com/matrix-org/synapse/issues/11049) introduced in Synapse v1.44.0, as well as [a bug](https://github.com/matrix-org/synapse/issues/11025) with the user directory when using application services. While this release candidate doesn't fix either of those issues, a second release candidate is expected to come out in a few days to address them.
+**Note:** Media storage providers module that read from Synapse's configuration need changes as of this version, see the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1450) for more information.
+
+Known Issues
+------------
 
-Media storage providers module that read from Synapse's configuration need changes as of this version, see the [upgrade notes](https://matrix-org.github.io/synapse/develop/upgrade#upgrading-to-v1450) for more information.
+- We are investigating [a performance issue](https://github.com/matrix-org/synapse/issues/11049) which was reported after the release of 1.44.0.
+- We are aware of [a bug](https://github.com/matrix-org/synapse/issues/11025) with the user directory when using application services. A second release candidate is expected which will resolve this.
 
 Features
 --------
diff --git a/changelog.d/10825.misc b/changelog.d/10825.misc
deleted file mode 100644
index f9786164d7..0000000000
--- a/changelog.d/10825.misc
+++ /dev/null
@@ -1 +0,0 @@
-Add an 'approximate difference' method to `StateFilter`.
diff --git a/changelog.d/10970.misc b/changelog.d/10970.misc
deleted file mode 100644
index bb75ea79a6..0000000000
--- a/changelog.d/10970.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix inconsistent behavior of `get_last_client_by_ip` when reporting data that has not been stored in the database yet.
diff --git a/changelog.d/10996.misc b/changelog.d/10996.misc
deleted file mode 100644
index c830d7ec2c..0000000000
--- a/changelog.d/10996.misc
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in Synapse 1.21.0 that causes opentracing and Prometheus metrics for replication requests to be measured incorrectly.
diff --git a/changelog.d/11036.misc b/changelog.d/11036.misc
deleted file mode 100644
index aae5ee62b2..0000000000
--- a/changelog.d/11036.misc
+++ /dev/null
@@ -1 +0,0 @@
-Ensure that cache config tests do not share state.
diff --git a/changelog.d/11045.bugfix b/changelog.d/11045.bugfix
deleted file mode 100644
index d712dc946a..0000000000
--- a/changelog.d/11045.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a long-standing bug when using multiple event persister workers where events were not correctly sent down `/sync` due to a race.
diff --git a/changelog.d/11053.bugfix b/changelog.d/11053.bugfix
deleted file mode 100644
index a59cfac931..0000000000
--- a/changelog.d/11053.bugfix
+++ /dev/null
@@ -1,2 +0,0 @@
-Fix a bug introduced in Synapse 1.45.0rc1 where the user directory would stop updating if it processed an event from a
-user not in the `users` table.
diff --git a/changelog.d/11061.bugfix b/changelog.d/11061.bugfix
deleted file mode 100644
index 26fb643793..0000000000
--- a/changelog.d/11061.bugfix
+++ /dev/null
@@ -1 +0,0 @@
-Fix a bug introduced in Synapse v1.44.0 when logging errors during oEmbed processing.
diff --git a/changelog.d/11127.bugfix b/changelog.d/11127.bugfix
new file mode 100644
index 0000000000..54417a9975
--- /dev/null
+++ b/changelog.d/11127.bugfix
@@ -0,0 +1 @@
+Revert change to counting of deactivated users towards the monthly active users limit ([\#10947](https://github.com/matrix-org/synapse/issues/10947)).
diff --git a/debian/changelog b/debian/changelog
index 0d5db739e7..5fefb2f2ac 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+matrix-synapse-py3 (1.45.0) stable; urgency=medium
+
+  * New synapse release 1.45.0.
+
+ -- Synapse Packaging team <packages@matrix.org>  Tue, 19 Oct 2021 11:18:53 +0100
+
+matrix-synapse-py3 (1.45.0~rc2) stable; urgency=medium
+
+  * New synapse release 1.45.0~rc2.
+
+ -- Synapse Packaging team <packages@matrix.org>  Thu, 14 Oct 2021 10:58:24 +0100
+
 matrix-synapse-py3 (1.45.0~rc1) stable; urgency=medium
 
   [ Nick @ Beeper ]
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 6b109ccffa..97452f34fe 100644
--- a/synapse/__init__.py
+++ b/synapse/__init__.py
@@ -47,7 +47,7 @@ try:
 except ImportError:
     pass
 
-__version__ = "1.45.0rc1"
+__version__ = "1.45.0"
 
 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/deactivate_account.py b/synapse/handlers/deactivate_account.py
index e88c3c27ce..bee62cf360 100644
--- a/synapse/handlers/deactivate_account.py
+++ b/synapse/handlers/deactivate_account.py
@@ -131,10 +131,6 @@ class DeactivateAccountHandler:
         # delete from user directory
         await self.user_directory_handler.handle_local_user_deactivated(user_id)
 
-        # If the user is present in the monthly active users table
-        # remove them
-        await self.store.remove_deactivated_user_from_mau_table(user_id)
-
         # Mark the user as erased, if they asked for that
         if erase_data:
             user = UserID.from_string(user_id)
diff --git a/synapse/storage/databases/main/monthly_active_users.py b/synapse/storage/databases/main/monthly_active_users.py
index ec4d47a560..a14ac03d4b 100644
--- a/synapse/storage/databases/main/monthly_active_users.py
+++ b/synapse/storage/databases/main/monthly_active_users.py
@@ -354,27 +354,3 @@ class MonthlyActiveUsersStore(MonthlyActiveUsersWorkerStore):
                         await self.upsert_monthly_active_user(user_id)
             elif now - last_seen_timestamp > LAST_SEEN_GRANULARITY:
                 await self.upsert_monthly_active_user(user_id)
-
-    async def remove_deactivated_user_from_mau_table(self, user_id: str) -> None:
-        """
-        Removes a deactivated user from the monthly active user
-        table and resets affected caches.
-
-        Args:
-            user_id(str): the user_id to remove
-        """
-
-        rows_deleted = await self.db_pool.simple_delete(
-            table="monthly_active_users",
-            keyvalues={"user_id": user_id},
-            desc="simple_delete",
-        )
-
-        if rows_deleted != 0:
-            await self.invalidate_cache_and_stream(
-                "user_last_seen_monthly_active", (user_id,)
-            )
-            await self.invalidate_cache_and_stream("get_monthly_active_count", ())
-            await self.invalidate_cache_and_stream(
-                "get_monthly_active_count_by_service", ()
-            )
diff --git a/tests/test_mau.py b/tests/test_mau.py
index c683c8937e..80ab40e255 100644
--- a/tests/test_mau.py
+++ b/tests/test_mau.py
@@ -13,11 +13,11 @@
 # limitations under the License.
 
 """Tests REST events for /rooms paths."""
-import synapse.rest.admin
+
 from synapse.api.constants import APP_SERVICE_REGISTRATION_TYPE, LoginType
 from synapse.api.errors import Codes, HttpResponseException, SynapseError
 from synapse.appservice import ApplicationService
-from synapse.rest.client import login, profile, register, sync
+from synapse.rest.client import register, sync
 
 from tests import unittest
 from tests.unittest import override_config
@@ -26,13 +26,7 @@ from tests.utils import default_config
 
 class TestMauLimit(unittest.HomeserverTestCase):
 
-    servlets = [
-        register.register_servlets,
-        sync.register_servlets,
-        synapse.rest.admin.register_servlets_for_client_rest_resource,
-        profile.register_servlets,
-        login.register_servlets,
-    ]
+    servlets = [register.register_servlets, sync.register_servlets]
 
     def default_config(self):
         config = default_config("test")
@@ -235,31 +229,6 @@ class TestMauLimit(unittest.HomeserverTestCase):
         self.reactor.advance(100)
         self.assertEqual(2, self.successResultOf(count))
 
-    def test_deactivated_users_dont_count_towards_mau(self):
-        user1 = self.register_user("madonna", "password")
-        self.register_user("prince", "password2")
-        self.register_user("frodo", "onering", True)
-
-        token1 = self.login("madonna", "password")
-        token2 = self.login("prince", "password2")
-        admin_token = self.login("frodo", "onering")
-
-        self.do_sync_for_user(token1)
-        self.do_sync_for_user(token2)
-
-        # Check that mau count is what we expect
-        count = self.get_success(self.store.get_monthly_active_count())
-        self.assertEqual(count, 2)
-
-        # Deactivate user1
-        url = "/_synapse/admin/v1/deactivate/%s" % user1
-        channel = self.make_request("POST", url, access_token=admin_token)
-        self.assertIn("success", channel.json_body["id_server_unbind_result"])
-
-        # Check that deactivated user is no longer counted
-        count = self.get_success(self.store.get_monthly_active_count())
-        self.assertEqual(count, 1)
-
     def create_user(self, localpart, token=None, appservice=False):
         request_data = {
             "username": localpart,