diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-05-18 11:23:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-18 11:23:11 +0100 |
commit | ed3125b0a17bf3c34af297004dd9ecb10d18ef22 (patch) | |
tree | 69169bb98fd5690800d70435dbf1d267b5524a9a /synapse | |
parent | Merge pull request #3233 from matrix-org/rav/remove_dead_code (diff) | |
parent | Fix error in handling receipts (diff) | |
download | synapse-ed3125b0a17bf3c34af297004dd9ecb10d18ef22.tar.xz |
Merge pull request #3235 from matrix-org/rav/fix_receipts_deferred
Fix error in handling receipts
Diffstat (limited to 'synapse')
-rw-r--r-- | synapse/storage/receipts.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/synapse/storage/receipts.py b/synapse/storage/receipts.py index 2f95e7e82a..709c69a926 100644 --- a/synapse/storage/receipts.py +++ b/synapse/storage/receipts.py @@ -297,18 +297,22 @@ class ReceiptsWorkerStore(SQLBaseStore): if receipt_type != "m.read": return - # Returns an ObservableDeferred + # Returns either an ObservableDeferred or the raw result res = self.get_users_with_read_receipts_in_room.cache.get( room_id, None, update_metrics=False, ) - if res: - if isinstance(res, defer.Deferred) and res.called: + # first handle the Deferred case + if isinstance(res, defer.Deferred): + if res.called: res = res.result - if user_id in res: - # We'd only be adding to the set, so no point invalidating if the - # user is already there - return + else: + res = None + + if res and user_id in res: + # We'd only be adding to the set, so no point invalidating if the + # user is already there + return self.get_users_with_read_receipts_in_room.invalidate((room_id,)) |