Duke-GCB / DukeDSClient

Command line program to allow uploading, downloading, and managing projects in the duke-data-service.
MIT License
5 stars 6 forks source link

403 error sending file to S3 after connection errors #260

Closed johnbradley closed 5 years ago

johnbradley commented 5 years ago

A user had a file chunk upload that failed to send to s3 with a 403(Forbidden) after experiencing some connection errors. ddsclient waits for a few seconds and retries for a number of times when a connection errors occur. In this case when the S3 connection worked ddsclient retried sending the chunk to S3 but a 403 was received. Error message:

Traceback (most recent call last):
  File "/opt/virtualenv/datadelivery/lib/python2.7/site-packages/ddsc/core/fileuploader.py", line 336, in upload_async
    sender.send()
  File "/opt/virtualenv/datadelivery/lib/python2.7/site-packages/ddsc/core/fileuploader.py", line 379, in send
    self._send_chunk(chunk, chunk_num)
  File "/opt/virtualenv/datadelivery/lib/python2.7/site-packages/ddsc/core/fileuploader.py", line 391, in _send_chunk
    self.upload_operations.send_file_external(url_info, chunk)
  File "/opt/virtualenv/datadelivery/lib/python2.7/site-packages/ddsc/core/fileuploader.py", line 190, in send_file_external
    raise ValueError("Failed to send file to external store. Error:" + str(resp.status_code) + host + url)
ValueError: Failed to send file to external store. Error:403 https://some-s3-server/...

I believe this 403 was because ddsclient had waiting too long and the S3 url had expired.