apache/seatunnel · warning · S3RedshiftJdbcConnectorException
SQL_OPERATION_FAILED
SQL_OPERATION_FAILED
Error message
close redshift jdbc client failed
What it means
S3RedshiftSinkAggregatedCommitter.close closes the shared RedshiftJdbcClient after committing. If RedshiftJdbcClient.close() throws SQLException it is wrapped as S3RedshiftJdbcConnectorException(SQL_OPERATION_FAILED, "close redshift jdbc client failed"). This happens during sink cleanup.
Source
Thrown at seatunnel-connectors-v2/connector-s3-redshift/src/main/java/org/apache/seatunnel/connectors/seatunnel/redshift/commit/S3RedshiftSinkAggregatedCommitter.java:112
try {
for (Map.Entry<String, LinkedHashMap<String, String>> entry :
aggregatedCommitInfo.getTransactionMap().entrySet()) {
// delete the transaction dir
hadoopFileSystemProxy.deleteFile(entry.getKey());
}
} catch (Exception e) {
log.error("abort aggregatedCommitInfo error ", e);
}
});
}
@Override
public void close() throws IOException {
super.close();
try {
RedshiftJdbcClient.getInstance(pluginConfig).close();
} catch (SQLException e) {
throw new S3RedshiftJdbcConnectorException(
CommonErrorCodeDeprecated.SQL_OPERATION_FAILED,
"close redshift jdbc client failed",
e);
}
}
private String convertSql(String path) {
return StringUtils.replace(executeSql, "${path}", path);
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Check whether the commit itself succeeded — this failure is in cleanup and data is usually already committed
- Inspect network/firewall logs for dropped connections to the Redshift endpoint during teardown
- If it recurs, increase connection idle/keepalive settings on the JDBC URL
Defensive patterns
Strategy: try-catch
Try / catch
try {
committer.close();
} catch (S3RedshiftJdbcConnectorException e) {
if (e.getMessage().contains("close redshift jdbc client failed")) {
log.warn("cleanup-only failure; verify commit result", e);
} else throw e;
} Prevention
- Treat close-time SQLExceptions as non-fatal when commit already succeeded
- Enable JDBC keepalive so the connection survives idle teardown gaps
- Check the commit transaction status in Redshift when this fires
When it happens
Trigger: Calling close() on the aggregated committer while the underlying JDBC connection is already dead/broken, causing the driver to throw SQLException on close.
Common situations: Network interruption during job teardown, connection killed server-side after the commit, or Redshift temporarily unavailable during shutdown.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/1e20160a364d7ad9.
Report an issue: GitHub.