This occurred when copying a 1MiB object with a low parallel composite upload threshold. This in turn split the request into two 512KiB calls to UploadObject made simultaneously across two threads.
It's a rare occurrence (can't reproduce it easily), but it seems like it should never happen.
Encountered exception while copying:
Traceback (most recent call last):
File "/usr/local/google/home/thobrla/gsutil/gslib/command.py", line 1680, in PerformTask
results = task.func(cls, task.args, thread_state=self.thread_gsutil_api)
File "/usr/local/google/home/thobrla/gsutil/gslib/copy_helper.py", line 279, in _PerformParallelUploadFileToObject
gzip_exts=None, allow_splitting=False)
File "/usr/local/google/home/thobrla/gsutil/gslib/copy_helper.py", line 1649, in _UploadFileToObject
dst_obj_metadata, preconditions, gsutil_api, logger)
File "/usr/local/google/home/thobrla/gsutil/gslib/copy_helper.py", line 1402, in _UploadFileToObjectNonResumable
provider=dst_url.scheme, fields=UPLOAD_RETURN_FIELDS)
File "/usr/local/google/home/thobrla/gsutil/gslib/cloud_api_delegator.py", line 233, in UploadObject
fields=fields)
File "/usr/local/google/home/thobrla/gsutil/gslib/gcs_json_api.py", line 1024, in UploadObject
apitools_strategy=apitools_transfer.SIMPLE_UPLOAD)
File "/usr/local/google/home/thobrla/gsutil/gslib/gcs_json_api.py", line 887, in _UploadObject
global_params=global_params)
File "/usr/local/google/home/thobrla/gsutil/gslib/third_party/storage_apitools/storage_v1_client.py", line 975, in Insert
download=download)
File "/usr/local/google/home/thobrla/gsutil/third_party/apitools/apitools/base/py/base_api.py", line 616, in _RunMethod
download)
File "/usr/local/google/home/thobrla/gsutil/third_party/apitools/apitools/base/py/base_api.py", line 598, in PrepareHttpRequest
self.__FinalizeRequest(http_request, url_builder)
File "/usr/local/google/home/thobrla/gsutil/third_party/apitools/apitools/base/py/base_api.py", line 517, in __FinalizeRequest
http_request.url = url_builder.url
File "/usr/local/google/home/thobrla/gsutil/third_party/apitools/apitools/base/py/base_api.py", line 184, in url
self.__scheme, self.__netloc, self.relative_path, self.query, ''))
File "/usr/local/google/home/thobrla/gsutil/third_party/apitools/apitools/base/py/base_api.py", line 176, in query
return urllib.parse.urlencode(self.query_params, doseq=True)
File "/usr/local/google/home/thobrla/gsutil/third_party/six/six.py", line 92, in __get__
delattr(obj.__class__, self.name)
AttributeError: urlencode