-
Notifications
You must be signed in to change notification settings - Fork 52
Open
Labels
Description
boto3 introduced a fun breaking change that results in the following error:
Uploading assembly/587630/V1/mri/native/demo_587630_V1_t1_001.mnc to https://s3.msi.umn.edu/lorisrb
Traceback (most recent call last):
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/boto3/s3/transfer.py", line 372, in upload_file
future.result()
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/s3transfer/futures.py", line 111, in result
return self._coordinator.result()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/s3transfer/futures.py", line 272, in result
raise self._exception
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/httpsession.py", line 464, in send
urllib_response = conn.urlopen(
^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/urllib3/connectionpool.py", line 787, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/urllib3/connectionpool.py", line 493, in _make_request
conn.request(
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/awsrequest.py", line 96, in request
rval = super().request(method, url, body, headers, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/urllib3/connection.py", line 449, in request
for chunk in chunks:
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/urllib3/util/request.py", line 228, in chunk_readable
datablock = body.read(blocksize)
^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/httpchecksum.py", line 198, in read
self._remaining += self._make_chunk()
^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/httpchecksum.py", line 214, in _make_chunk
raw_chunk = self._raw.read(self._chunk_size)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/s3transfer/utils.py", line 526, in read
data = self._fileobj.read(amount_to_read)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/s3transfer/upload.py", line 91, in read
raise self._transfer_coordinator.exception
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/s3transfer/tasks.py", line 142, in __call__
return self._execute_main(kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/s3transfer/tasks.py", line 165, in _execute_main
return_value = self._main(**kwargs)
^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/s3transfer/upload.py", line 825, in _main
response = client.upload_part(
^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/client.py", line 570, in _api_call
return self._make_api_call(operation_name, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/client.py", line 1031, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (MissingContentLength) when calling the UploadPart operation: Unknown
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/Loris-MRI/bin/mri/python/scripts/run_push_imaging_files_to_s3_pipeline.py", line 63, in <module>
main()
File "/opt/Loris-MRI/bin/mri/python/scripts/run_push_imaging_files_to_s3_pipeline.py", line 59, in main
PushImagingFilesToS3Pipeline(loris_getopt_obj, os.path.basename(__file__[:-3]))
File "/opt/Loris-MRI/bin/mri/python/lib/dcm2bids_imaging_pipeline_lib/push_imaging_files_to_s3_pipeline.py", line 56, in __init__
self._upload_files_to_s3()
File "/opt/Loris-MRI/bin/mri/python/lib/dcm2bids_imaging_pipeline_lib/push_imaging_files_to_s3_pipeline.py", line 232, in _upload_files_to_s3
self.s3_obj.upload_file(file_full_path, file["s3_link"])
File "/opt/Loris-MRI/bin/mri/python/lib/aws_s3.py", line 113, in upload_file
s3_bucket.upload_file(file_name, s3_file_name)
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/boto3/s3/inject.py", line 266, in bucket_upload_file
return self.meta.client.upload_file(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/botocore/context.py", line 123, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/boto3/s3/inject.py", line 175, in upload_file
return transfer.upload_file(
^^^^^^^^^^^^^^^^^^^^^
File "/opt/Loris-MRI/bin/mri/python_virtualenvs/loris-mri-python/lib/python3.11/site-packages/boto3/s3/transfer.py", line 378, in upload_file
raise S3UploadFailedError(
boto3.exceptions.S3UploadFailedError: Failed to upload /data/Loris-MRI/data/assembly/587630/V1/mri/native/demo_587630_V1_t1_001.mnc to lorisrb/assembly/587630/V1/mri/native/demo_587630_V1_t1_001.mnc: An error occurred (MissingContentLength) when calling the UploadPart operation: Unknown
Last working version of boto3 with our pipeline is 1.35.99. Need to find a fix so that our pipeline works on newer versions of boto3