From f4caed8a9df3654e97dd7f22b91372d0b489fa2a Mon Sep 17 00:00:00 2001 From: Sean Quah Date: Thu, 19 May 2022 18:44:25 +0100 Subject: [PATCH] Fix `RetryDestinationLimiter` re-starting finished log contexts Signed-off-by: Sean Quah --- changelog.d/12795.bugfix | 1 + synapse/util/retryutils.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 changelog.d/12795.bugfix diff --git a/changelog.d/12795.bugfix b/changelog.d/12795.bugfix new file mode 100644 index 000000000000..6ddd3d24e05f --- /dev/null +++ b/changelog.d/12795.bugfix @@ -0,0 +1 @@ +Fix a long-standing bug where finished log contexts would be re-started when failing to contact remote homeservers. diff --git a/synapse/util/retryutils.py b/synapse/util/retryutils.py index 81bfed268ee7..5568c2e96545 100644 --- a/synapse/util/retryutils.py +++ b/synapse/util/retryutils.py @@ -16,8 +16,8 @@ from types import TracebackType from typing import TYPE_CHECKING, Any, Optional, Type -import synapse.logging.context from synapse.api.errors import CodeMessageException +from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage import DataStore from synapse.util import Clock @@ -265,4 +265,6 @@ async def store_retry_timings() -> None: logger.exception("Failed to store destination_retry_timings") # we deliberately do this in the background. - synapse.logging.context.run_in_background(store_retry_timings) + run_as_background_process( + f"store_retry_timings-{self.destination}", store_retry_timings + )