apache/seatunnel · error · IOException

NebulaGraph write request failed.

Error message

NebulaGraph write request failed.

What it means

The catch-all in SessionPoolNebulaGraphClient.execute: any non-IOException exception from sessionPool.execute (connection errors from the Nebula client, runtime errors, parameter-binding issues) is wrapped as a generic IOException 'NebulaGraph write request failed.' The meaningful cause is in the wrapped exception.

Source

Thrown at seatunnel-connectors-v2/connector-nebulagraph/src/main/java/org/apache/seatunnel/connectors/seatunnel/nebulagraph/client/SessionPoolNebulaGraphClient.java:76

                    e);
        }
    }

    @Override
    public void execute(String statement, Map<String, Object> parameters) throws IOException {
        try {
            ResultSet result = sessionPool.execute(statement, parameters);
            if (!result.isSucceeded()) {
                throw new IOException(
                        "NebulaGraph rejected the write with code "
                                + result.getErrorCode()
                                + ": "
                                + result.getErrorMessage());
            }
        } catch (IOException e) {
            throw e;
        } catch (Exception e) {
            throw new IOException("NebulaGraph write request failed.", e);
        }
    }

    @Override
    public void close() {
        sessionPool.close();
    }
}

View on GitHub (pinned to cf67b549a7)

Solutions

  1. Inspect the cause chain for the real failure (connection reset, session invalid, binding error)
  2. Check network stability to graphd and session idle/timeout settings
  3. Validate that all parameter values map to supported Nebula value types
  4. Retry the batch — transient connection failures often succeed on retry
Defensive patterns

Strategy: retry

Validate before calling

// preflight
nc -zv <graphd-host> 9669  # connectivity before job start

Try / catch

try {
    client.execute(statement, params);
} catch (IOException e) {
    Throwable cause = e.getCause();
    if (cause instanceof RuntimeException || cause instanceof java.net.ConnectException) {
        retryWithBackoff(); // transient transport failure
    } else {
        throw e;
    }
}

Prevention

When it happens

Trigger: sessionPool.execute throws (does not return an error ResultSet): broken connection to graphd, client-side runtime exception, null/unsupported parameter value, auth token lost mid-session.

Common situations: Network blip between SeaTunnel worker and Nebula; session pool invalidating a dead session; passing a Java type the Nebula parameter binder cannot map; Nebula client library incompatibility.

Related errors


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