Fix dropped logcontexts during high outbound traffic. (#5277)
Fixes #5271.
This commit is contained in:
parent
7ddbbc45b7
commit
f76d407ef3
|
@ -0,0 +1 @@
|
||||||
|
Fix dropped logcontexts during high outbound traffic.
|
|
@ -344,15 +344,21 @@ class _LimitedHostnameResolver(object):
|
||||||
|
|
||||||
def resolveHostName(self, resolutionReceiver, hostName, portNumber=0,
|
def resolveHostName(self, resolutionReceiver, hostName, portNumber=0,
|
||||||
addressTypes=None, transportSemantics='TCP'):
|
addressTypes=None, transportSemantics='TCP'):
|
||||||
# Note this is happening deep within the reactor, so we don't need to
|
|
||||||
# worry about log contexts.
|
|
||||||
|
|
||||||
# We need this function to return `resolutionReceiver` so we do all the
|
# We need this function to return `resolutionReceiver` so we do all the
|
||||||
# actual logic involving deferreds in a separate function.
|
# actual logic involving deferreds in a separate function.
|
||||||
self._resolve(
|
|
||||||
resolutionReceiver, hostName, portNumber,
|
# even though this is happening within the depths of twisted, we need to drop
|
||||||
addressTypes, transportSemantics,
|
# our logcontext before starting _resolve, otherwise: (a) _resolve will drop
|
||||||
)
|
# the logcontext if it returns an incomplete deferred; (b) _resolve will
|
||||||
|
# call the resolutionReceiver *with* a logcontext, which it won't be expecting.
|
||||||
|
with PreserveLoggingContext():
|
||||||
|
self._resolve(
|
||||||
|
resolutionReceiver,
|
||||||
|
hostName,
|
||||||
|
portNumber,
|
||||||
|
addressTypes,
|
||||||
|
transportSemantics,
|
||||||
|
)
|
||||||
|
|
||||||
return resolutionReceiver
|
return resolutionReceiver
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue