apache / apache/parquet-java

ParquetWriter.getDataSize NullPointerException after closed

Open
#2,037 6 comments 0 reactions 0 assignees View on GitHub
Component: Java Component: Parquet Priority: Major Type: bug
Dominant language
Java
Stars
3.1k
Forks
1.6k
Avg merge
3d 12h
Merged PRs (30d)
33

Description

When I run `ParquetWriter.getDataSize()`, it works normally. But after I call `ParquetWriter.close()`, subsequent calls to ParquetWriter.getDataSize result in a NullPointerException.

```
java.lang.NullPointerException
at org.apache.parquet.hadoop.InternalParquetRecordWriter.getDataSize(InternalParquetRecordWriter.java:132)
at org.apache.parquet.hadoop.ParquetWriter.getDataSize(ParquetWriter.java:314)
at FileBufferState.getFileSizeInBytes(FileBufferState.scala:83)
```

The reason for the NPE appears to be in `InternalParquetRecordWriter.getDataSize`, where it assumes that `columnStore` is not null.

But the `close()` method calls `flushRowGroupToStore()` which sets `columnStore = null`.

I'm guessing that once the file is closed, we can just return `lastRowGroupEndPos` since there should be no more buffered data, but I don't fully understand how this class works.

**Environment**: Linux prim 4.8.13-1-ARCH #1 SMP PREEMPT Fri Dec 9 07:24:34 CET 2016 x86_64 GNU/Linux

openjdk version "1.8.0_112"
OpenJDK Runtime Environment (build 1.8.0_112-b15)
OpenJDK 64-Bit Server VM (build 25.112-b15, mixed mode)

**Reporter**: [Mike Mintz](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=mikemintz)
#### Related issues:
- [Add accessor to ParquetWriter to get current data size](https://github.com/apache/parquet-java/issues/1833) (relates to)

**Note**: *This issue was originally created as [PARQUET-860](https://issues.apache.org/jira/browse/PARQUET-860). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.