[ 
https://issues.apache.org/jira/browse/FLINK-20504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17247931#comment-17247931
 ] 

Rui Li commented on FLINK-20504:
--------------------------------

One possible cause for this NPE is that the Hive {{recordWriter}} can be closed 
both in 
[finish|https://github.com/apache/flink/blob/release-1.11.1/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/connectors/hive/write/HiveBulkWriterFactory.java#L77]
 and 
[dispose|https://github.com/apache/flink/blob/release-1.11.1/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/connectors/hive/write/HiveBulkWriterFactory.java#L61].
 Suppose {{finish}} is called first but then something goes wrong and 
{{dispose}} is invoked to do cleanup. Then the {{recordWriter}} is closed twice 
and leads to NPE. We can add some safety check to make sure this won't happen, 
i.e. by setting {{recordWriter=null}} after it's closed. But again, I'm not 
sure whether the problem causes job failure or just some error log.

> NPE when writing to hive and fail over happened
> -----------------------------------------------
>
>                 Key: FLINK-20504
>                 URL: https://issues.apache.org/jira/browse/FLINK-20504
>             Project: Flink
>          Issue Type: Bug
>          Components: Connectors / Hive
>    Affects Versions: 1.11.1
>            Reporter: zhuxiaoshang
>            Priority: Major
>
> When writing to hive and fail over happened,I got the following exception
> {code:java}
> java.lang.NullPointerException
> at 
> org.apache.parquet.hadoop.InternalParquetRecordWriter.flushRowGroupToStore(InternalParquetRecordWriter.java:165)
> at 
> org.apache.parquet.hadoop.InternalParquetRecordWriter.close(InternalParquetRecordWriter.java:114)
> at 
> org.apache.parquet.hadoop.ParquetRecordWriter.close(ParquetRecordWriter.java:165)
> at 
> org.apache.hadoop.hive.ql.io.parquet.write.ParquetRecordWriterWrapper.close(ParquetRecordWriterWrapper.java:103)
> at 
> org.apache.hadoop.hive.ql.io.parquet.write.ParquetRecordWriterWrapper.close(ParquetRecordWriterWrapper.java:120)
> at 
> org.apache.flink.connectors.hive.write.HiveBulkWriterFactory$1.dispose(HiveBulkWriterFactory.java:61)
> at 
> org.apache.flink.formats.hadoop.bulk.HadoopPathBasedPartFileWriter.dispose(HadoopPathBasedPartFileWriter.java:79)
> at 
> org.apache.flink.streaming.api.functions.sink.filesystem.Bucket.disposePartFile(Bucket.java:235)
> at java.util.HashMap$Values.forEach(HashMap.java:981)
> at 
> org.apache.flink.streaming.api.functions.sink.filesystem.Buckets.close(Buckets.java:318)
> at 
> org.apache.flink.streaming.api.functions.sink.filesystem.StreamingFileSinkHelper.close(StreamingFileSinkHelper.java:108)
> at 
> org.apache.flink.table.filesystem.stream.StreamingFileWriter.dispose(StreamingFileWriter.java:177)
> at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.disposeAllOperators(StreamTask.java:703)
> at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.cleanUpInvoke(StreamTask.java:635)
> at 
> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:542)
> at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:721)
> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:546)
> at java.lang.Thread.run(Thread.java:748)
> {code}
> But it does not reproduce every time.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to