summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Baker <dave@matrix.org>2016-03-11 14:34:09 +0000
committerDavid Baker <dave@matrix.org>2016-03-11 14:34:09 +0000
commitaf59826a2fda31a6382f60659796a1c8db6f21ce (patch)
tree5e0d88003085d6a66f8a3aadf879c3d5293c2825
parentDelete old, unused methods and rename new one to just be `user_delete_access_... (diff)
downloadsynapse-af59826a2fda31a6382f60659796a1c8db6f21ce.tar.xz
Make select more sensible when dseleting access tokens, rename pusher deletion to match access token deletion and make exception arg optional.
Diffstat (limited to '')
-rw-r--r--synapse/handlers/auth.py2
-rw-r--r--synapse/push/pusherpool.py2
-rw-r--r--synapse/storage/registration.py8
3 files changed, 5 insertions, 7 deletions
diff --git a/synapse/handlers/auth.py b/synapse/handlers/auth.py
index 43f2cdc2c4..5c0ea636bc 100644
--- a/synapse/handlers/auth.py
+++ b/synapse/handlers/auth.py
@@ -441,7 +441,7 @@ class AuthHandler(BaseHandler):
         yield self.store.user_delete_access_tokens(
             user_id, except_access_token_ids
         )
-        yield self.hs.get_pusherpool().remove_pushers_by_user_except_access_tokens(
+        yield self.hs.get_pusherpool().remove_pushers_by_user(
             user_id, except_access_token_ids
         )
 
diff --git a/synapse/push/pusherpool.py b/synapse/push/pusherpool.py
index 28ec94d866..0b463c6fdb 100644
--- a/synapse/push/pusherpool.py
+++ b/synapse/push/pusherpool.py
@@ -92,7 +92,7 @@ class PusherPool:
                 yield self.remove_pusher(p['app_id'], p['pushkey'], p['user_name'])
 
     @defer.inlineCallbacks
-    def remove_pushers_by_user_except_access_tokens(self, user_id, except_token_ids):
+    def remove_pushers_by_user(self, user_id, except_token_ids=[]):
         all = yield self.store.get_all_pushers()
         logger.info(
             "Removing all pushers for user %s except access tokens ids %r",
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py
index 266e29f5bc..3a050621d9 100644
--- a/synapse/storage/registration.py
+++ b/synapse/storage/registration.py
@@ -198,14 +198,12 @@ class RegistrationStore(SQLBaseStore):
     def user_delete_access_tokens(self, user_id, except_token_ids):
         def f(txn):
             txn.execute(
-                "SELECT id, token FROM access_tokens WHERE user_id = ? LIMIT 50",
-                (user_id,)
+                "SELECT id, token FROM access_tokens "
+                "WHERE user_id = ? AND id not in LIMIT 50",
+                (user_id,except_token_ids)
             )
             rows = txn.fetchall()
             for r in rows:
-                if r[0] in except_token_ids:
-                    continue
-
                 txn.call_after(self.get_user_by_access_token.invalidate, (r[1],))
             txn.execute(
                 "DELETE FROM access_tokens WHERE id in (%s)" % ",".join(