Skip to content
Snippets Groups Projects
Unverified Commit 23125251 authored by Patrick Cloke's avatar Patrick Cloke Committed by GitHub
Browse files

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

parent 5c5516f8
No related branches found
No related tags found
No related merge requests found
Fixs a long standing bug which resulted in an exception: "TypeError: argument of type 'ObservableDeferred' is not iterable".
......@@ -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
......
......@@ -93,7 +93,7 @@ class ObservableDeferred(object):
This returns a brand new deferred that is resolved when the underlying
deferred is resolved. Interacting with the returned deferred does not
effect the underdlying deferred.
effect the underlying deferred.
"""
if not self._result:
d = defer.Deferred()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment