mirror of
https://github.com/element-hq/synapse.git
synced 2025-12-10 00:02:09 -05:00
Fix potential lost logcontext when PerDestinationQueue.shutdown(...) (#19178)
Spawning from looking at the logs in
https://github.com/element-hq/synapse/issues/19165#issuecomment-3527452941
which mention the `federation_transaction_transmission_loop`. I don't
think it's the source of the lost logcontext that person in the issue is
experiencing because this only applies when you try to `shutdown` the
homeserver.
Problem code introduced in
https://github.com/element-hq/synapse/pull/18828
To explain the fix, see the [*Deferred
callbacks*](3b59ac3b69/docs/log_contexts.md (deferred-callbacks))
section of our logcontext docs for more info (specifically using
solution 2).
This commit is contained in:
parent
5d545d1626
commit
408a05ebbc
1
changelog.d/19178.misc
Normal file
1
changelog.d/19178.misc
Normal file
@ -0,0 +1 @@
|
|||||||
|
Fix potential lost logcontext when `PerDestinationQueue.shutdown(...)`.
|
||||||
@ -41,6 +41,7 @@ from synapse.events import EventBase
|
|||||||
from synapse.federation.units import Edu
|
from synapse.federation.units import Edu
|
||||||
from synapse.handlers.presence import format_user_presence_state
|
from synapse.handlers.presence import format_user_presence_state
|
||||||
from synapse.logging import issue9533_logger
|
from synapse.logging import issue9533_logger
|
||||||
|
from synapse.logging.context import PreserveLoggingContext
|
||||||
from synapse.logging.opentracing import SynapseTags, set_tag
|
from synapse.logging.opentracing import SynapseTags, set_tag
|
||||||
from synapse.metrics import SERVER_NAME_LABEL, sent_transactions_counter
|
from synapse.metrics import SERVER_NAME_LABEL, sent_transactions_counter
|
||||||
from synapse.types import JsonDict, ReadReceipt
|
from synapse.types import JsonDict, ReadReceipt
|
||||||
@ -186,7 +187,8 @@ class PerDestinationQueue:
|
|||||||
self._transaction_manager.shutdown()
|
self._transaction_manager.shutdown()
|
||||||
try:
|
try:
|
||||||
if self.active_transmission_loop is not None:
|
if self.active_transmission_loop is not None:
|
||||||
self.active_transmission_loop.cancel()
|
with PreserveLoggingContext():
|
||||||
|
self.active_transmission_loop.cancel()
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user