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)

Reply via email to