diff options
author | Richard van der Hoff <richard@matrix.org> | 2017-03-17 15:28:35 +0000 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2017-03-18 00:01:37 +0000 |
commit | 994d7ae7c5e96ae411d7d7e6660c5a2172b69146 (patch) | |
tree | 2732867251462fcb52b3abb0e35690bdf1c1d70f | |
parent | Merge pull request #2016 from matrix-org/rav/queue_pdus_during_join (diff) | |
download | synapse-994d7ae7c5e96ae411d7d7e6660c5a2172b69146.tar.xz |
Remove broken use of clock.call_later
background_updates was using `call_later` in a way that leaked the logcontext into the reactor. We could have rewritten it to do it properly, but given that we weren't using the fancier facilities provided by `call_later`, we might as well just use `async.sleep`, which does the logcontext stuff properly.
-rw-r--r-- | synapse/storage/background_updates.py | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/synapse/storage/background_updates.py b/synapse/storage/background_updates.py index 94b2bcc54a..813ad59e56 100644 --- a/synapse/storage/background_updates.py +++ b/synapse/storage/background_updates.py @@ -12,6 +12,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. +import synapse.util.async from ._base import SQLBaseStore from . import engines @@ -84,24 +85,14 @@ class BackgroundUpdateStore(SQLBaseStore): self._background_update_performance = {} self._background_update_queue = [] self._background_update_handlers = {} - self._background_update_timer = None @defer.inlineCallbacks def start_doing_background_updates(self): - assert self._background_update_timer is None, \ - "background updates already running" - logger.info("Starting background schema updates") while True: - sleep = defer.Deferred() - self._background_update_timer = self._clock.call_later( - self.BACKGROUND_UPDATE_INTERVAL_MS / 1000., sleep.callback, None - ) - try: - yield sleep - finally: - self._background_update_timer = None + yield synapse.util.async.sleep( + self.BACKGROUND_UPDATE_INTERVAL_MS / 1000.) try: result = yield self.do_next_background_update( |