diff options
author | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2021-11-04 13:23:45 +0000 |
---|---|---|
committer | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2021-11-04 13:23:45 +0000 |
commit | f78a0829894068fb35d7f8caee71529ab5bfe786 (patch) | |
tree | 208bfa65ad5103658a29c515cea3034bdecb019b | |
parent | Merge remote-tracking branch 'origin/develop' into rei/gsfg_1 (diff) | |
download | synapse-f78a0829894068fb35d7f8caee71529ab5bfe786.tar.xz |
Fix up log contexts in _get_state_for_group_fire_request
-rw-r--r-- | synapse/storage/databases/state/store.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/synapse/storage/databases/state/store.py b/synapse/storage/databases/state/store.py index 8214d80e68..79c26a379d 100644 --- a/synapse/storage/databases/state/store.py +++ b/synapse/storage/databases/state/store.py @@ -27,10 +27,9 @@ from typing import ( import attr from twisted.internet import defer -from twisted.internet.defer import ensureDeferred from synapse.api.constants import EventTypes -from synapse.logging.context import make_deferred_yieldable +from synapse.logging.context import make_deferred_yieldable, run_in_background from synapse.storage._base import SQLBaseStore from synapse.storage.database import ( DatabasePool, @@ -330,15 +329,17 @@ class StateGroupDataStore(StateBackgroundUpdateStore, SQLBaseStore): return group_to_state_dict[group] - # OSTD is this right wrt. log context rules? - request_deferred = ensureDeferred(_the_request()) + # We don't immediately await the result, so must use run_in_background + # But we DO await the result before the current log context (request) + # finishes, so don't need to run it as a background process. + request_deferred = run_in_background(_the_request()) observable_deferred = ObservableDeferred(request_deferred) # Insert the ObservableDeferred into the cache group_request_dict = self._state_group_inflight_requests.setdefault(group, {}) group_request_dict[db_state_filter] = observable_deferred - return await request_deferred + return await make_deferred_yieldable(observable_deferred.observe()) async def _get_state_for_group_using_inflight_cache( self, group: int, state_filter: StateFilter |