Paul George created ARROW-5072: ---------------------------------- Summary: write_table fails silently on S3 errors Key: ARROW-5072 URL: https://issues.apache.org/jira/browse/ARROW-5072 Project: Apache Arrow Issue Type: Bug Components: Python Affects Versions: 0.12.1 Environment: Python 3.6.8 Reporter: Paul George
{{pyarrow==0.12.1}} *pyarrow.parquet.write_table* called with where=S3File(...) fails silently when encountering errors while writing to S3 (in the example below, boto3 is raising a NoSuchBucket exception). However, instead of using S3File(), calling write_table with where=_<filepath>_ and with filesystem=S3FileSystem() does *not* fail silently and raises, as is expected. h4. Code/Repro {code:java} import pandas as pd import pyarrow as pa import pyarrow.parquet as pq from s3fs import S3File, S3FileSystem df = pd.DataFrame({'col0': []}) s3_filepath = 's3://some-bogus-bucket/df.parquet' print('>> test 1') try: # use S3File --> fails silently pq.write_table(pa.Table.from_pandas(df.copy()), S3File(S3FileSystem(), s3_filepath, mode='wb')) except Exception: print('>>>> Exception raised!') else: print('>>>> Exception **NOT** raised!') print('>> test 2') try: # use filepath and S3FileSystem --> raises Exception, as expected pq.write_table(pa.Table.from_pandas(df.copy()), s3_filepath, filesystem=S3FileSystem()) except Exception: print('>>>> Exception raised!') else: print('>>>> Exception **NOT** raised!'){code} h4. h4. Output {code:java} >> test 1 Exception ignored in: <bound method S3File.__del__ of <S3File some-bogus-bucket/df.parquet>> Traceback (most recent call last): File "<redacted>/lib/python3.6/site-packages/s3fs/core.py", line 1476, in __del__ self.close() File "<redacted>/lib/python3.6/site-packages/s3fs/core.py", line 1454, in close raise_from(IOError('Write failed: %s' % self.path), e) File "<string>", line 3, in raise_from OSError: Write failed: some-bogus-bucket/df.parquet >>>> Exception **NOT** raised! >> test 2 >>>> Exception raised! Exception ignored in: <bound method S3File.__del__ of <S3File some-bogus-bucket/df.parquet>> Traceback (most recent call last): File "<redacted>/lib/python3.6/site-packages/s3fs/core.py", line 1476, in __del__ self.close() File "<redacted>/lib/python3.6/site-packages/s3fs/core.py", line 1454, in close raise_from(IOError('Write failed: %s' % self.path), e) File "<string>", line 3, in raise_from OSError: Write failed: some-bogus-bucket/df.parquet {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)