mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Merge branch 'master' into develop
This commit is contained in:
commit
ee2cee5f52
@ -1,3 +1,12 @@
|
|||||||
|
Synapse 1.45.1 (2021-10-20)
|
||||||
|
===========================
|
||||||
|
|
||||||
|
Bugfixes
|
||||||
|
--------
|
||||||
|
|
||||||
|
- Revert change to counting of deactivated users towards the monthly active users limit, introduced in 1.45.0rc1. ([\#11127](https://github.com/matrix-org/synapse/issues/11127))
|
||||||
|
|
||||||
|
|
||||||
Synapse 1.45.0 (2021-10-19)
|
Synapse 1.45.0 (2021-10-19)
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
6
debian/changelog
vendored
6
debian/changelog
vendored
@ -1,3 +1,9 @@
|
|||||||
|
matrix-synapse-py3 (1.45.1) stable; urgency=medium
|
||||||
|
|
||||||
|
* New synapse release 1.45.1.
|
||||||
|
|
||||||
|
-- Synapse Packaging team <packages@matrix.org> Wed, 20 Oct 2021 11:58:27 +0100
|
||||||
|
|
||||||
matrix-synapse-py3 (1.45.0) stable; urgency=medium
|
matrix-synapse-py3 (1.45.0) stable; urgency=medium
|
||||||
|
|
||||||
* New synapse release 1.45.0.
|
* New synapse release 1.45.0.
|
||||||
|
@ -47,7 +47,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
__version__ = "1.45.0"
|
__version__ = "1.45.1"
|
||||||
|
|
||||||
if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
|
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
|
# We import here so that we don't have to install a bunch of deps when
|
||||||
|
@ -131,10 +131,6 @@ class DeactivateAccountHandler:
|
|||||||
# delete from user directory
|
# delete from user directory
|
||||||
await self.user_directory_handler.handle_local_user_deactivated(user_id)
|
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
|
# Mark the user as erased, if they asked for that
|
||||||
if erase_data:
|
if erase_data:
|
||||||
user = UserID.from_string(user_id)
|
user = UserID.from_string(user_id)
|
||||||
|
@ -354,27 +354,3 @@ class MonthlyActiveUsersStore(MonthlyActiveUsersWorkerStore):
|
|||||||
await self.upsert_monthly_active_user(user_id)
|
await self.upsert_monthly_active_user(user_id)
|
||||||
elif now - last_seen_timestamp > LAST_SEEN_GRANULARITY:
|
elif now - last_seen_timestamp > LAST_SEEN_GRANULARITY:
|
||||||
await self.upsert_monthly_active_user(user_id)
|
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", ()
|
|
||||||
)
|
|
||||||
|
@ -13,11 +13,11 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
"""Tests REST events for /rooms paths."""
|
"""Tests REST events for /rooms paths."""
|
||||||
import synapse.rest.admin
|
|
||||||
from synapse.api.constants import APP_SERVICE_REGISTRATION_TYPE, LoginType
|
from synapse.api.constants import APP_SERVICE_REGISTRATION_TYPE, LoginType
|
||||||
from synapse.api.errors import Codes, HttpResponseException, SynapseError
|
from synapse.api.errors import Codes, HttpResponseException, SynapseError
|
||||||
from synapse.appservice import ApplicationService
|
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 import unittest
|
||||||
from tests.unittest import override_config
|
from tests.unittest import override_config
|
||||||
@ -26,13 +26,7 @@ from tests.utils import default_config
|
|||||||
|
|
||||||
class TestMauLimit(unittest.HomeserverTestCase):
|
class TestMauLimit(unittest.HomeserverTestCase):
|
||||||
|
|
||||||
servlets = [
|
servlets = [register.register_servlets, sync.register_servlets]
|
||||||
register.register_servlets,
|
|
||||||
sync.register_servlets,
|
|
||||||
synapse.rest.admin.register_servlets_for_client_rest_resource,
|
|
||||||
profile.register_servlets,
|
|
||||||
login.register_servlets,
|
|
||||||
]
|
|
||||||
|
|
||||||
def default_config(self):
|
def default_config(self):
|
||||||
config = default_config("test")
|
config = default_config("test")
|
||||||
@ -235,31 +229,6 @@ class TestMauLimit(unittest.HomeserverTestCase):
|
|||||||
self.reactor.advance(100)
|
self.reactor.advance(100)
|
||||||
self.assertEqual(2, self.successResultOf(count))
|
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):
|
def create_user(self, localpart, token=None, appservice=False):
|
||||||
request_data = {
|
request_data = {
|
||||||
"username": localpart,
|
"username": localpart,
|
||||||
|
Loading…
Reference in New Issue
Block a user