diff options
author | Erik Johnston <erik@matrix.org> | 2016-05-13 14:43:23 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2016-05-13 14:43:23 +0100 |
commit | ba5c616ff4398f79a374dfa0a75028e8991c2ab0 (patch) | |
tree | 0c1a9d592ac0279aa773a813b438a9baaee20f0c /synapse/storage/pusher.py | |
parent | Merge pull request #769 from matrix-org/erikj/push_actions_delete (diff) | |
parent | Spelling (diff) | |
download | synapse-ba5c616ff4398f79a374dfa0a75028e8991c2ab0.tar.xz |
Merge pull request #778 from matrix-org/erikj/add_pusher
Fixup add_pusher
Diffstat (limited to 'synapse/storage/pusher.py')
-rw-r--r-- | synapse/storage/pusher.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/synapse/storage/pusher.py b/synapse/storage/pusher.py index d9afd7ec87..9e8e2e2964 100644 --- a/synapse/storage/pusher.py +++ b/synapse/storage/pusher.py @@ -156,8 +156,7 @@ class PusherStore(SQLBaseStore): profile_tag=""): with self._pushers_id_gen.get_next() as stream_id: def f(txn): - txn.call_after(self.get_users_with_pushers_in_room.invalidate_all) - return self._simple_upsert_txn( + newly_inserted = self._simple_upsert_txn( txn, "pushers", { @@ -178,11 +177,18 @@ class PusherStore(SQLBaseStore): "id": stream_id, }, ) - defer.returnValue((yield self.runInteraction("add_pusher", f))) + if newly_inserted: + # get_users_with_pushers_in_room only cares if the user has + # at least *one* pusher. + txn.call_after(self.get_users_with_pushers_in_room.invalidate_all) + + yield self.runInteraction("add_pusher", f) @defer.inlineCallbacks def delete_pusher_by_app_id_pushkey_user_id(self, app_id, pushkey, user_id): def delete_pusher_txn(txn, stream_id): + txn.call_after(self.get_users_with_pushers_in_room.invalidate_all) + self._simple_delete_one_txn( txn, "pushers", @@ -194,6 +200,7 @@ class PusherStore(SQLBaseStore): {"app_id": app_id, "pushkey": pushkey, "user_id": user_id}, {"stream_id": stream_id}, ) + with self._pushers_id_gen.get_next() as stream_id: yield self.runInteraction( "delete_pusher", delete_pusher_txn, stream_id |