A TypeError is raised while token expires during writing to S3
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1k
- Forks
- 305
- Avg merge
- 22h 37m
- Merged PRs (30d)
- 4
Description
This issue occurs when a STS token expires in the middle of writing to S3. An OSError: Write failed: TypeError("'NoneType' object is not subscriptable",) is raised instead of a PermissionError.
OSError: Write failed: TypeError("'NoneType' object is not subscriptable",)
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/pyarrow/parquet.py", line 1450, in
write_to_dataset write_table(subtable, f, **kwargs)
File "/usr/local/lib/python3.6/site-packages/pyarrow/parquet.py", line 1344, in
write_table writer.write_table(table, row_group_size=row_group_size)
File "/usr/local/lib/python3.6/site-packages/pyarrow/parquet.py", line 474, in
write_table self.writer.write_table(table, row_group_size=row_group_size)
File "pyarrow/_parquet.pyx", line 1375, in pyarrow._parquet.ParquetWriter.write_table File "pyarrow/error.pxi", line 80, in
pyarrow.lib.check_statuspyarrow.lib.ArrowIOError: Arrow error: IOError: The provided token has expired.. Detail: Python exception: PermissionError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/s3fs/core.py", line 1096, in _upload_chunk PartNumber=part, UploadId=self.mpu['UploadId'],TypeError: 'NoneType' object is not subscriptable
environment is:
s3fs==0.4.0
boto3==1.10.27
botocore==1.13.27
pyarrow==0.15.1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in s3fs/core.py at _upload_chunk, reported around line 1096, and reproduce the failure while an STS token expires during an S3 write. Compare the resulting TypeError with the expected PermissionError. Done means the token-expiry path reports PermissionError instead of the NoneType subscript error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, python
- Domain
- cloud
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100