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

  1. Check whether the commit itself succeeded — this failure is in cleanup and data is usually already committed
  2. Inspect network/firewall logs for dropped connections to the Redshift endpoint during teardown
  3. 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

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.