Merge pull request #3235 from matrix-org/rav/fix_receipts_deferred

Fix error in handling receipts
This commit is contained in:
Richard van der Hoff 2018-05-18 11:23:11 +01:00 committed by GitHub
commit ed3125b0a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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,))