[ https://issues.apache.org/jira/browse/FLINK-17545?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Lonergan updated FLINK-17545: ---------------------------------- Summary: Resource leak JDBCUpsertOutputFormat (was: CLONE - NPE JDBCUpsertOutputFormat) > Resource leak JDBCUpsertOutputFormat > ------------------------------------ > > Key: FLINK-17545 > URL: https://issues.apache.org/jira/browse/FLINK-17545 > Project: Flink > Issue Type: Improvement > Components: Connectors / JDBC > Affects Versions: 1.10.0 > Reporter: John Lonergan > Priority: Major > > 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} -- This message was sent by Atlassian Jira (v8.3.4#803005)