Merge commit '15997618e' into anoa/dinsic_release_1_18_x
* commit '15997618e': Clean up PreserveLoggingContext (#7877) fix an incorrect comment
This commit is contained in:
1
changelog.d/7877.misc
Normal file
1
changelog.d/7877.misc
Normal file
@@ -0,0 +1 @@
|
||||
Clean up `PreserveLoggingContext`.
|
||||
@@ -575,8 +575,8 @@ def respond_with_json_bytes(
|
||||
if send_cors:
|
||||
set_cors_headers(request)
|
||||
|
||||
# todo: we can almost certainly avoid this copy and encode the json straight into
|
||||
# the bytesIO, but it would involve faffing around with string->bytes wrappers.
|
||||
# note that this is zero-copy (the bytesio shares a copy-on-write buffer with
|
||||
# the original `bytes`).
|
||||
bytes_io = BytesIO(json_bytes)
|
||||
|
||||
producer = NoRangeStaticProducer(request, bytes_io)
|
||||
|
||||
@@ -566,36 +566,33 @@ class LoggingContextFilter(logging.Filter):
|
||||
return True
|
||||
|
||||
|
||||
class PreserveLoggingContext(object):
|
||||
"""Captures the current logging context and restores it when the scope is
|
||||
exited. Used to restore the context after a function using
|
||||
@defer.inlineCallbacks is resumed by a callback from the reactor."""
|
||||
class PreserveLoggingContext:
|
||||
"""Context manager which replaces the logging context
|
||||
|
||||
__slots__ = ["current_context", "new_context", "has_parent"]
|
||||
The previous logging context is restored on exit."""
|
||||
|
||||
__slots__ = ["_old_context", "_new_context"]
|
||||
|
||||
def __init__(
|
||||
self, new_context: LoggingContextOrSentinel = SENTINEL_CONTEXT
|
||||
) -> None:
|
||||
self.new_context = new_context
|
||||
self._new_context = new_context
|
||||
|
||||
def __enter__(self) -> None:
|
||||
"""Captures the current logging context"""
|
||||
self.current_context = set_current_context(self.new_context)
|
||||
|
||||
if self.current_context:
|
||||
self.has_parent = self.current_context.previous_context is not None
|
||||
self._old_context = set_current_context(self._new_context)
|
||||
|
||||
def __exit__(self, type, value, traceback) -> None:
|
||||
"""Restores the current logging context"""
|
||||
context = set_current_context(self.current_context)
|
||||
context = set_current_context(self._old_context)
|
||||
|
||||
if context != self.new_context:
|
||||
if context != self._new_context:
|
||||
if not context:
|
||||
logger.warning("Expected logging context %s was lost", self.new_context)
|
||||
logger.warning(
|
||||
"Expected logging context %s was lost", self._new_context
|
||||
)
|
||||
else:
|
||||
logger.warning(
|
||||
"Expected logging context %s but found %s",
|
||||
self.new_context,
|
||||
self._new_context,
|
||||
context,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user