summary refs log tree commit diff
path: root/synapse/storage/__init__.py
diff options
context:
space:
mode:
authorNeil Johnson <neil@fragile.org.uk>2018-07-30 22:07:07 +0100
committerNeil Johnson <neil@fragile.org.uk>2018-07-30 22:07:07 +0100
commit9b13817e067d370f3ddb860baef884bf460449b5 (patch)
tree5e41610f8ae5d927690ee60b63f282792517dc03 /synapse/storage/__init__.py
parentlimit register and sign in on number of monthly users (diff)
downloadsynapse-9b13817e067d370f3ddb860baef884bf460449b5.tar.xz
factor out metrics from __init__ to app/homeserver
Diffstat (limited to 'synapse/storage/__init__.py')
-rw-r--r--synapse/storage/__init__.py37
1 files changed, 13 insertions, 24 deletions
diff --git a/synapse/storage/__init__.py b/synapse/storage/__init__.py
index 6a75bf0e52..7b8215bf08 100644
--- a/synapse/storage/__init__.py
+++ b/synapse/storage/__init__.py
@@ -19,7 +19,6 @@ import logging
 import time
 
 from dateutil import tz
-from prometheus_client import Gauge
 
 from synapse.api.constants import PresenceState
 from synapse.storage.devices import DeviceStore
@@ -61,14 +60,6 @@ from .util.id_generators import ChainedIdGenerator, IdGenerator, StreamIdGenerat
 
 logger = logging.getLogger(__name__)
 
-# Gauges to expose monthly active user control metrics
-current_mau_gauge = Gauge("synapse_admin_current_mau", "Current MAU")
-max_mau_value_gauge = Gauge("synapse_admin_max_mau_value", "MAU Limit")
-limit_usage_by_mau_gauge = Gauge(
-    "synapse_admin_limit_usage_by_mau", "MAU Limiting enabled"
-)
-
-
 class DataStore(RoomMemberStore, RoomStore,
                 RegistrationStore, StreamStore, ProfileStore,
                 PresenceStore, TransactionStore,
@@ -102,6 +93,7 @@ class DataStore(RoomMemberStore, RoomStore,
         self._clock = hs.get_clock()
         self.database_engine = hs.database_engine
 
+        self.db_conn = db_conn
         self._stream_id_gen = StreamIdGenerator(
             db_conn, "events", "stream_ordering",
             extra_tables=[("local_invites", "stream_id")]
@@ -282,22 +274,19 @@ class DataStore(RoomMemberStore, RoomStore,
         returns:
             int: count of current monthly active users
         """
-        def _count_monthly_users(txn):
-            thirty_days_ago = int(self._clock.time_msec()) - (1000 * 60 * 60 * 24 * 30)
-            sql = """
-                SELECT COUNT(*) FROM user_ips
-                WHERE last_seen > ?
-            """
-            txn.execute(sql, (thirty_days_ago,))
-            count, = txn.fetchone()
 
-            self._current_mau = count
-            current_mau_gauge.set(self._current_mau)
-            max_mau_value_gauge.set(self.hs.config.max_mau_value)
-            limit_usage_by_mau_gauge.set(self.hs.config.limit_usage_by_mau)
-            logger.info("calling mau stats")
-            return count
-        return self.runInteraction("count_monthly_users", _count_monthly_users)
+        thirty_days_ago = int(self._clock.time_msec()) - (1000 * 60 * 60 * 24 * 30)
+        sql = """
+            SELECT COALESCE(count(*), 0) FROM (
+                SELECT user_id FROM user_ips
+                WHERE last_seen > ?
+                GROUP BY user_id
+            ) u
+        """
+        txn = self.db_conn.cursor()
+        txn.execute(sql, (thirty_days_ago,))
+        count, = txn.fetchone()
+        return count
 
 
     def count_r30_users(self):