mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 16:44:48 -04:00
Fix logging context warnings when losing replication connection (#10984)
Instead of triggering `__exit__` manually on the replication handler's logging context, use it as a context manager so that there is an `__enter__` call to balance the `__exit__`.
This commit is contained in:
parent
013e0f9cae
commit
6a67f3786a
3 changed files with 27 additions and 10 deletions
|
@ -182,9 +182,13 @@ class BaseReplicationStreamProtocol(LineOnlyReceiver):
|
|||
|
||||
# a logcontext which we use for processing incoming commands. We declare it as a
|
||||
# background process so that the CPU stats get reported to prometheus.
|
||||
self._logging_context = BackgroundProcessLoggingContext(
|
||||
"replication-conn", self.conn_id
|
||||
)
|
||||
with PreserveLoggingContext():
|
||||
# thanks to `PreserveLoggingContext()`, the new logcontext is guaranteed to
|
||||
# capture the sentinel context as its containing context and won't prevent
|
||||
# GC of / unintentionally reactivate what would be the current context.
|
||||
self._logging_context = BackgroundProcessLoggingContext(
|
||||
"replication-conn", self.conn_id
|
||||
)
|
||||
|
||||
def connectionMade(self):
|
||||
logger.info("[%s] Connection established", self.id())
|
||||
|
@ -434,8 +438,12 @@ class BaseReplicationStreamProtocol(LineOnlyReceiver):
|
|||
if self.transport:
|
||||
self.transport.unregisterProducer()
|
||||
|
||||
# mark the logging context as finished
|
||||
self._logging_context.__exit__(None, None, None)
|
||||
# mark the logging context as finished by triggering `__exit__()`
|
||||
with PreserveLoggingContext():
|
||||
with self._logging_context:
|
||||
pass
|
||||
# the sentinel context is now active, which may not be correct.
|
||||
# PreserveLoggingContext() will restore the correct logging context.
|
||||
|
||||
def __str__(self):
|
||||
addr = None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue