[ https://issues.apache.org/jira/browse/FLINK-17544?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17107760#comment-17107760 ]
John Lonergan commented on FLINK-17544: --------------------------------------- Off which branch. BTW Theres a load of other problems in the JDBC support to do with leaking respources > NPE JDBCUpsertOutputFormat > -------------------------- > > Key: FLINK-17544 > URL: https://issues.apache.org/jira/browse/FLINK-17544 > Project: Flink > Issue Type: Improvement > Components: Connectors / JDBC > Affects Versions: 1.10.0 > Reporter: John Lonergan > Priority: Major > Fix For: 1.11.0, 1.10.2 > > > Encountered a situation where I get an NPE from JDBCUpsertOutputFormat. > This occurs when close is called before open. > This happened because I had a sink where it had a final field of type > JDBCUpsertOutputFormat. > The open operation of my sink was slow (blocked on something else) and open > on the JDBCUpsertOutputFormat had not yet been called. > In the mean time the job was cancelled, which caused close on my sink to be > called, which then > called close on the JDBCUpsertOutputFormat . > This throws an NPE due to a lack of a guard on an internal field that is > only initialised in the JDBCUpsertOutputFormat open operation. > The close method already guards one potentially null value .. > {code:java} > if (this.scheduledFuture != null) { > {code} > But needs the additional guard below ... > {code:java} > if (jdbcWriter != null) // << THIS LINE NEEDED TO GUARD UNINITIALISE VAR > try { > jdbcWriter.close(); > } catch (SQLException e) { > LOG.warn("Close JDBC writer failed.", e); > } > {code} > See also FLINK-17545 -- This message was sent by Atlassian Jira (v8.3.4#803005)