From fad085de5375274d596d694ea60cc24649fb0479 Mon Sep 17 00:00:00 2001 From: Sean Quah Date: Thu, 19 May 2022 18:44:25 +0100 Subject: [PATCH 1/2] Fix `RetryDestinationLimiter` re-starting finished log contexts Signed-off-by: Sean Quah --- changelog.d/12803.bugfix | 1 + synapse/util/retryutils.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 changelog.d/12803.bugfix diff --git a/changelog.d/12803.bugfix b/changelog.d/12803.bugfix new file mode 100644 index 000000000000..6ddd3d24e05f --- /dev/null +++ b/changelog.d/12803.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 + ) From 648406f933e02e6fbde7df34175a9729875edf77 Mon Sep 17 00:00:00 2001 From: Sean Quah Date: Thu, 19 May 2022 19:48:39 +0100 Subject: [PATCH 2/2] Avoid spamming prometheus metrics --- synapse/util/retryutils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/synapse/util/retryutils.py b/synapse/util/retryutils.py index 5568c2e96545..d0a69ff843e5 100644 --- a/synapse/util/retryutils.py +++ b/synapse/util/retryutils.py @@ -265,6 +265,4 @@ async def store_retry_timings() -> None: logger.exception("Failed to store destination_retry_timings") # we deliberately do this in the background. - run_as_background_process( - f"store_retry_timings-{self.destination}", store_retry_timings - ) + run_as_background_process("store_retry_timings", store_retry_timings)