X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/58e740a6ea84242b423163ae66f0dc9399ddd788..4ffe3382ff35cebce873668dfdfad2eef2def3d3:/sdk/python/arvados/keep.py diff --git a/sdk/python/arvados/keep.py b/sdk/python/arvados/keep.py index bc07851835..0018687ff3 100644 --- a/sdk/python/arvados/keep.py +++ b/sdk/python/arvados/keep.py @@ -1080,6 +1080,13 @@ class KeepClient(object): self.get_counter.add(1) + request_id = (request_id or + (hasattr(self, 'api_client') and self.api_client.request_id) or + arvados.util.new_request_id()) + if headers is None: + headers = {} + headers['X-Request-Id'] = request_id + slot = None blob = None try: @@ -1096,12 +1103,6 @@ class KeepClient(object): self.misses_counter.add(1) - if headers is None: - headers = {} - headers['X-Request-Id'] = (request_id or - (hasattr(self, 'api_client') and self.api_client.request_id) or - arvados.util.new_request_id()) - # If the locator has hints specifying a prefix (indicating a # remote keepproxy) or the UUID of a local gateway service, # read data from the indicated service(s) instead of the usual @@ -1171,14 +1172,14 @@ class KeepClient(object): for key in sorted_roots) if not roots_map: raise arvados.errors.KeepReadError( - "failed to read {}: no Keep services available ({})".format( - loc_s, loop.last_result())) + "[{}] failed to read {}: no Keep services available ({})".format( + request_id, loc_s, loop.last_result())) elif not_founds == len(sorted_roots): raise arvados.errors.NotFoundError( - "{} not found".format(loc_s), service_errors) + "[{}] {} not found".format(request_id, loc_s), service_errors) else: raise arvados.errors.KeepReadError( - "failed to read {} after {}".format(loc_s, loop.attempts_str()), service_errors, label="service") + "[{}] failed to read {} after {}".format(request_id, loc_s, loop.attempts_str()), service_errors, label="service") @retry.retry_method def put(self, data, copies=2, num_retries=None, request_id=None, classes=None): @@ -1215,10 +1216,11 @@ class KeepClient(object): return loc_s locator = KeepLocator(loc_s) + request_id = (request_id or + (hasattr(self, 'api_client') and self.api_client.request_id) or + arvados.util.new_request_id()) headers = { - 'X-Request-Id': (request_id or - (hasattr(self, 'api_client') and self.api_client.request_id) or - arvados.util.new_request_id()), + 'X-Request-Id': request_id, 'X-Keep-Desired-Replicas': str(copies), } roots_map = {} @@ -1275,15 +1277,15 @@ class KeepClient(object): return writer_pool.response() if not roots_map: raise arvados.errors.KeepWriteError( - "failed to write {}: no Keep services available ({})".format( - data_hash, loop.last_result())) + "[{}] failed to write {}: no Keep services available ({})".format( + request_id, data_hash, loop.last_result())) else: service_errors = ((key, roots_map[key].last_result()['error']) for key in sorted_roots if roots_map[key].last_result()['error']) raise arvados.errors.KeepWriteError( - "failed to write {} after {} (wanted {} copies but wrote {})".format( - data_hash, loop.attempts_str(), (copies, classes), writer_pool.done()), service_errors, label="service") + "[{}] failed to write {} after {} (wanted {} copies but wrote {})".format( + request_id, data_hash, loop.attempts_str(), (copies, classes), writer_pool.done()), service_errors, label="service") def local_store_put(self, data, copies=1, num_retries=None, classes=[]): """A stub for put().