apache/seatunnel · error · CatalogException

close doris catalog failed

Error message

close doris catalog failed

What it means

DorisCatalog.close wraps SQLException from closing the underlying JDBC connection into CatalogException('close doris catalog failed'); the catalog is shutting down but the connection could not be released cleanly, usually indicating a broken socket.

Solutions

  1. Log and continue if it occurs during shutdown — the socket will be reaped anyway
  2. Check for network drops between the client and FE at close time
  3. Ensure close() is not invoked twice on the same catalog instance
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/catalog/DorisCatalog.java:165 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10). Data as JSON: /api/errors/b9f8158ad08c6db1. Report an issue: GitHub.

Appendix: source

Thrown at seatunnel-connectors-v2/connector-doris/src/main/java/org/apache/seatunnel/connectors/doris/catalog/DorisCatalog.java:165

    private String getDorisVersion() throws SQLException {
        String dorisVersion = null;
        try (PreparedStatement preparedStatement =
                        conn.prepareStatement(DorisCatalogUtil.QUERY_DORIS_VERSION_QUERY);
                ResultSet resultSet = preparedStatement.executeQuery()) {

            while (resultSet.next()) {
                dorisVersion = resultSet.getString(2);
            }
        }
        return dorisVersion;
    }

    @Override
    public void close() throws CatalogException {
        try {
            conn.close();
        } catch (SQLException e) {
            throw new CatalogException("close doris catalog failed", e);
        }
    }

    @Override
    public String name() {
        return catalogName;
    }

    @Override
    public String getDefaultDatabase() throws CatalogException {
        return defaultDatabase;
    }

    @Override
    public boolean databaseExists(String databaseName) throws CatalogException {
        try (PreparedStatement ps = conn.prepareStatement(DorisCatalogUtil.DATABASE_QUERY)) {
            ps.setString(1, databaseName);
            try (ResultSet rs = ps.executeQuery()) {

View on GitHub (pinned to cf67b549a7)