summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrendan Abolivier <babolivier@matrix.org>2019-05-31 09:54:46 +0100
committerBrendan Abolivier <babolivier@matrix.org>2019-05-31 09:54:46 +0100
commit847b9dcd1c9d7d7a43333e85f69dc78471095475 (patch)
treefde736222c454bb37707b95f99a79d471ece376d
parentTypo (diff)
downloadsynapse-847b9dcd1c9d7d7a43333e85f69dc78471095475.tar.xz
Make max_delta equal to period * 10%
-rw-r--r--synapse/config/registration.py15
-rw-r--r--synapse/storage/_base.py7
-rw-r--r--tests/rest/client/v2_alpha/test_register.py18
3 files changed, 8 insertions, 32 deletions
diff --git a/synapse/config/registration.py b/synapse/config/registration.py
index b4fd4af368..1835b4b1f3 100644
--- a/synapse/config/registration.py
+++ b/synapse/config/registration.py
@@ -39,9 +39,7 @@ class AccountValidityConfig(Config):
             else:
                 self.renew_email_subject = "Renew your %(app)s account"
 
-            self.startup_job_max_delta = self.parse_duration(
-                config.get("startup_job_max_delta", 0),
-            )
+            self.startup_job_max_delta = self.period * 10. / 100.
 
         if self.renew_by_email_enabled and "public_baseurl" not in synapse_config:
             raise ConfigError("Can't send renewal emails without 'public_baseurl'")
@@ -133,20 +131,15 @@ class RegistrationConfig(Config):
         # This means that, if a validity period is set, and Synapse is restarted (it will
         # then derive an expiration date from the current validity period), and some time
         # after that the validity period changes and Synapse is restarted, the users'
-        # expiration dates won't be updated unless their account is manually renewed.
-        #
-        # If set, the ``startup_job_max_delta`` optional setting will make the startup job
-        # described above set a random expiration date between t + period  and
-        # t + period + startup_job_max_delta, t being the date and time at which the job
-        # sets the expiration date for a given user. This is useful for server admins that
-        # want to avoid Synapse sending a lot of renewal emails at once.
+        # expiration dates won't be updated unless their account is manually renewed. This
+        # date will be randomly selected within a range [now + period ; now + period + d],
+        # where d is equal to 10% of the validity period.
         #
         #account_validity:
         #  enabled: True
         #  period: 6w
         #  renew_at: 1w
         #  renew_email_subject: "Renew your %%(app)s account"
-        #  startup_job_max_delta: 2d
 
         # The user must provide all of the below types of 3PID when registering.
         #
diff --git a/synapse/storage/_base.py b/synapse/storage/_base.py
index 40802fd3dc..7f944ec717 100644
--- a/synapse/storage/_base.py
+++ b/synapse/storage/_base.py
@@ -329,14 +329,13 @@ class SQLBaseStore(object):
              user_id (str): User ID to set an expiration date for.
              use_delta (bool): If set to False, the expiration date for the user will be
                 now + validity period. If set to True, this expiration date will be a
-                random value in the [now + period; now + period + max_delta] range,
-                max_delta being the configured value for the size of the range, unless
-                delta is 0, in which case it sets it to now + period.
+                random value in the [now + period; now + period + d] range, d being a
+                delta equal to 10% of the validity period.
         """
         now_ms = self._clock.time_msec()
         expiration_ts = now_ms + self._account_validity.period
 
-        if use_delta and self._account_validity.startup_job_max_delta:
+        if use_delta:
             expiration_ts = self.rand.randrange(
                 expiration_ts,
                 expiration_ts + self._account_validity.startup_job_max_delta,
diff --git a/tests/rest/client/v2_alpha/test_register.py b/tests/rest/client/v2_alpha/test_register.py
index 68654e25ab..711628ded1 100644
--- a/tests/rest/client/v2_alpha/test_register.py
+++ b/tests/rest/client/v2_alpha/test_register.py
@@ -436,7 +436,7 @@ class AccountValidityBackgroundJobTestCase(unittest.HomeserverTestCase):
 
     def make_homeserver(self, reactor, clock):
         self.validity_period = 10
-        self.max_delta = 10
+        self.max_delta = self.validity_period * 10. / 100.
 
         config = self.default_config()
 
@@ -454,22 +454,6 @@ class AccountValidityBackgroundJobTestCase(unittest.HomeserverTestCase):
 
     def test_background_job(self):
         """
-        Tests whether the account validity startup background job does the right thing,
-        which is sticking an expiration date to every account that doesn't already have
-        one.
-        """
-        user_id = self.register_user("kermit", "user")
-
-        self.hs.config.account_validity.startup_job_max_delta = 0
-
-        now_ms = self.hs.clock.time_msec()
-        self.get_success(self.store._set_expiration_date_when_missing())
-
-        res = self.get_success(self.store.get_expiration_ts_for_user(user_id))
-        self.assertEqual(res, now_ms + self.validity_period)
-
-    def test_background_job_with_max_delta(self):
-        """
         Tests the same thing as test_background_job, except that it sets the
         startup_job_max_delta parameter and checks that the expiration date is within the
         allowed range.