Fix "argument of type 'ObservableDeferred' is not iterable" error (#7708)

This commit is contained in:
Patrick Cloke 2020-06-16 12:01:18 -04:00 committed by GitHub
parent 5c5516f80e
commit 231252516c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 5 deletions

View file

@ -24,6 +24,7 @@ from twisted.internet import defer
from synapse.storage._base import SQLBaseStore, make_in_list_sql_clause
from synapse.storage.database import Database
from synapse.storage.util.id_generators import StreamIdGenerator
from synapse.util.async_helpers import ObservableDeferred
from synapse.util.caches.descriptors import cached, cachedInlineCallbacks, cachedList
from synapse.util.caches.stream_change_cache import StreamChangeCache
@ -300,10 +301,10 @@ class ReceiptsWorkerStore(SQLBaseStore):
room_id, None, update_metrics=False
)
# first handle the Deferred case
if isinstance(res, defer.Deferred):
if res.called:
res = res.result
# first handle the ObservableDeferred case
if isinstance(res, ObservableDeferred):
if res.has_called():
res = res.get_result()
else:
res = None