Skip to content
Snippets Groups Projects
Commit 89834d9a authored by Neil Johnson's avatar Neil Johnson
Browse files

Merge branch 'neilj/mau_tracker' of github.com:matrix-org/synapse into neilj/disable_hs

parents 7bcf126b e54794f5
No related branches found
No related tags found
No related merge requests found
...@@ -43,14 +43,25 @@ class MonthlyActiveUsersStore(SQLBaseStore): ...@@ -43,14 +43,25 @@ class MonthlyActiveUsersStore(SQLBaseStore):
thirty_days_ago = ( thirty_days_ago = (
int(self._clock.time_msec()) - (1000 * 60 * 60 * 24 * 30) int(self._clock.time_msec()) - (1000 * 60 * 60 * 24 * 30)
) )
# Purge stale users
sql = "DELETE FROM monthly_active_users WHERE timestamp < ?" sql = "DELETE FROM monthly_active_users WHERE timestamp < ?"
txn.execute(sql, (thirty_days_ago,)) txn.execute(sql, (thirty_days_ago,))
# If MAU user count still exceeds the MAU threshold, then delete on
# a least recently active basis.
# Note it is not possible to write this query using OFFSET due to
# incompatibilities in how sqlite an postgres support the feature.
# sqlite requires 'LIMIT -1 OFFSET ?', the LIMIT must be present
# 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
sql = """ sql = """
DELETE FROM monthly_active_users DELETE FROM monthly_active_users
ORDER BY timestamp desc WHERE user_id NOT IN (
LIMIT -1 OFFSET ? SELECT user_id FROM monthly_active_users
ORDER BY timestamp DESC
LIMIT ?
)
""" """
txn.execute(sql, (self.hs.config.max_mau_value,)) txn.execute(sql, (self.hs.config.max_mau_value,))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment