Clear logger txn_id after making requests
Otherwise, transaction IDs start bleeding over to messages where they don't make sense. Change-Id: I7cf1b0ee7f928fcaa89a799a734e0d028d705383
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
from eventlet import sleep, Timeout
|
from eventlet import sleep, Timeout, spawn
|
||||||
from eventlet.green import httplib, socket
|
from eventlet.green import httplib, socket
|
||||||
import json
|
import json
|
||||||
import six
|
import six
|
||||||
@@ -202,7 +202,8 @@ class InternalClient(object):
|
|||||||
if params:
|
if params:
|
||||||
req.params = params
|
req.params = params
|
||||||
try:
|
try:
|
||||||
resp = req.get_response(self.app)
|
# execute in a separate greenthread to not polute corolocals
|
||||||
|
resp = spawn(req.get_response, self.app).wait()
|
||||||
except (Exception, Timeout):
|
except (Exception, Timeout):
|
||||||
exc_type, exc_value, exc_traceback = exc_info()
|
exc_type, exc_value, exc_traceback = exc_info()
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -913,7 +913,6 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
|
|||||||
'X-Backend-Include-Deleted': str(include_deleted)}
|
'X-Backend-Include-Deleted': str(include_deleted)}
|
||||||
if newest:
|
if newest:
|
||||||
headers['X-Newest'] = 'true'
|
headers['X-Newest'] = 'true'
|
||||||
try:
|
|
||||||
try:
|
try:
|
||||||
resp = self.int_client.make_request(
|
resp = self.int_client.make_request(
|
||||||
'GET', path, headers, acceptable_statuses=(2,),
|
'GET', path, headers, acceptable_statuses=(2,),
|
||||||
@@ -940,8 +939,6 @@ class ContainerSharder(ContainerSharderConf, ContainerReplicator):
|
|||||||
"Failed to get shard ranges from %s: invalid data: %r",
|
"Failed to get shard ranges from %s: invalid data: %r",
|
||||||
quote(broker.root_path), err)
|
quote(broker.root_path), err)
|
||||||
return None
|
return None
|
||||||
finally:
|
|
||||||
self.logger.txn_id = None
|
|
||||||
|
|
||||||
def _put_container(self, node, part, account, container, headers, body):
|
def _put_container(self, node, part, account, container, headers, body):
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ from textwrap import dedent
|
|||||||
import six
|
import six
|
||||||
from six.moves import range, zip_longest
|
from six.moves import range, zip_longest
|
||||||
from six.moves.urllib.parse import quote, parse_qsl
|
from six.moves.urllib.parse import quote, parse_qsl
|
||||||
from swift.common import exceptions, internal_client, request_helpers, swob
|
from swift.common import exceptions, internal_client, request_helpers, swob, \
|
||||||
|
utils
|
||||||
from swift.common.header_key_dict import HeaderKeyDict
|
from swift.common.header_key_dict import HeaderKeyDict
|
||||||
from swift.common.storage_policy import StoragePolicy
|
from swift.common.storage_policy import StoragePolicy
|
||||||
from swift.common.middleware.proxy_logging import ProxyLoggingMiddleware
|
from swift.common.middleware.proxy_logging import ProxyLoggingMiddleware
|
||||||
@@ -347,6 +348,35 @@ class TestInternalClient(unittest.TestCase):
|
|||||||
client = InternalClient(self)
|
client = InternalClient(self)
|
||||||
client.make_request('GET', '/', {}, (200,))
|
client.make_request('GET', '/', {}, (200,))
|
||||||
|
|
||||||
|
def test_make_request_clears_txn_id_after_calling_app(self):
|
||||||
|
class InternalClient(internal_client.InternalClient):
|
||||||
|
def __init__(self, test, logger):
|
||||||
|
def fake_app(env, start_response):
|
||||||
|
self.app.logger.txn_id = 'foo'
|
||||||
|
self.app.logger.debug('Inside of request')
|
||||||
|
start_response('200 Ok', [('Content-Length', '0')])
|
||||||
|
return []
|
||||||
|
|
||||||
|
self.test = test
|
||||||
|
self.user_agent = 'some_agent'
|
||||||
|
self.app = fake_app
|
||||||
|
self.app.logger = logger
|
||||||
|
self.request_tries = 1
|
||||||
|
self.use_replication_network = False
|
||||||
|
|
||||||
|
fake_logger = debug_logger()
|
||||||
|
logger = utils.LogAdapter(fake_logger, 'test-server')
|
||||||
|
logger.debug('Before request')
|
||||||
|
client = InternalClient(self, logger)
|
||||||
|
client.make_request('GET', '/', {}, (200,))
|
||||||
|
logger.debug('After request')
|
||||||
|
self.assertEqual([(args[0], kwargs['extra'].get('txn_id'))
|
||||||
|
for args, kwargs in fake_logger.log_dict['debug']], [
|
||||||
|
('Before request', None),
|
||||||
|
('Inside of request', 'foo'),
|
||||||
|
('After request', None),
|
||||||
|
])
|
||||||
|
|
||||||
def test_make_request_defaults_replication_network_header(self):
|
def test_make_request_defaults_replication_network_header(self):
|
||||||
class InternalClient(internal_client.InternalClient):
|
class InternalClient(internal_client.InternalClient):
|
||||||
def __init__(self, test):
|
def __init__(self, test):
|
||||||
|
|||||||
Reference in New Issue
Block a user