diff options
author | Mark Haines <mark.haines@matrix.org> | 2016-05-13 16:59:56 +0100 |
---|---|---|
committer | Mark Haines <mark.haines@matrix.org> | 2016-05-13 16:59:56 +0100 |
commit | 1f71f386f68423c00e0d4180ae48b271864b42a5 (patch) | |
tree | 9dd45307ffd592023a8334e90d2c2180f4463225 /synapse/storage/pusher.py | |
parent | Shift some of the state_group methods into the SlavedEventStore (diff) | |
parent | Merge pull request #783 from matrix-org/markjh/slave_account_data (diff) | |
download | synapse-1f71f386f68423c00e0d4180ae48b271864b42a5.tar.xz |
Merge branch 'develop' into dbkr/email_notifs_on_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 |