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(
|