summary refs log tree commit diff
path: root/synapse
diff options
context:
space:
mode:
authorNeil Johnson <neil@fragile.org.uk>2018-08-16 22:55:32 +0100
committerNeil Johnson <neil@fragile.org.uk>2018-08-16 22:55:32 +0100
commitbcfeb44afe750dadd4199e7c02302b0157bdab11 (patch)
treea2c3bb85b247336c67f5a1dd653ee91c086bfc39 /synapse
parentblock event creation and room creation on hitting resource limits (diff)
downloadsynapse-bcfeb44afe750dadd4199e7c02302b0157bdab11.tar.xz
call reap on start up and fix under reaping bug
Diffstat (limited to 'synapse')
-rw-r--r--synapse/api/auth.py2
-rwxr-xr-xsynapse/app/homeserver.py1
-rw-r--r--synapse/storage/monthly_active_users.py5
3 files changed, 6 insertions, 2 deletions
diff --git a/synapse/api/auth.py b/synapse/api/auth.py
index 3b2a2ab77a..ab1e3a4e35 100644
--- a/synapse/api/auth.py
+++ b/synapse/api/auth.py
@@ -799,7 +799,7 @@ class Auth(object):
             current_mau = yield self.store.get_monthly_active_count()
             if current_mau >= self.hs.config.max_mau_value:
                 raise AuthError(
-                    403, "Monthly Active User Limits AU Limit Exceeded",
+                    403, "Monthly Active User Limit Exceeded",
                     admin_uri=self.hs.config.admin_uri,
                     errcode=Codes.RESOURCE_LIMIT_EXCEED
                 )
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index a98bb506e5..800b9c0e3c 100755
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -525,6 +525,7 @@ def run(hs):
     clock.looping_call(
         hs.get_datastore().reap_monthly_active_users, 1000 * 60 * 60
     )
+    yield hs.get_datastore().reap_monthly_active_users()
 
     @defer.inlineCallbacks
     def generate_monthly_active_users():
diff --git a/synapse/storage/monthly_active_users.py b/synapse/storage/monthly_active_users.py
index 7e417f811e..06f9a75a97 100644
--- a/synapse/storage/monthly_active_users.py
+++ b/synapse/storage/monthly_active_users.py
@@ -96,7 +96,10 @@ class MonthlyActiveUsersStore(SQLBaseStore):
             # While Postgres does not require 'LIMIT', but also does not support
             # negative LIMIT values. So there is no way to write it that both can
             # support
-            query_args = [self.hs.config.max_mau_value]
+            safe_guard = self.hs.config.max_mau_value - len(self.reserved_users)
+            # Must be greater than zero for postgres
+            safe_guard = safe_guard if safe_guard > 0 else 0
+            query_args = [safe_guard]
 
             base_sql = """
                 DELETE FROM monthly_active_users