apache/seatunnel · error · SeaTunnelException
Failed to get connection, interrupted while doing another at
Error message
Failed to get connection, interrupted while doing another attempt
What it means
JdbcConnectionFactory.connect retries acquiring a JDBC connection from the DataSource up to connectRetryTimes. If a retry attempt fails with SQLException and the intervening Thread.sleep is interrupted (InterruptedException), it wraps and rethrows as SeaTunnelException with this message, abandoning further retries.
Source
Thrown at seatunnel-connectors-v2/connector-cdc/connector-cdc-base/src/main/java/org/apache/seatunnel/connectors/cdc/base/relational/connection/JdbcConnectionFactory.java:71
new ConnectionPoolId(
sourceConfig.getHostname(),
sourceConfig.getPort(),
sourceConfig.getUsername());
HikariDataSource dataSource =
JdbcConnectionPools.getInstance(jdbcConnectionPoolFactory)
.getOrCreateConnectionPool(connectionPoolId, sourceConfig);
int i = 0;
while (i < connectRetryTimes) {
try {
return dataSource.getConnection();
} catch (SQLException e) {
if (i < connectRetryTimes - 1) {
try {
Thread.sleep(300);
} catch (InterruptedException ie) {
throw new SeaTunnelException(
"Failed to get connection, interrupted while doing another attempt",
ie);
}
LOG.warn("Get connection failed, retry times {}", i + 1);
} else {
LOG.error("Get connection failed after retry {} times", i + 1);
throw new SeaTunnelException(e);
}
}
i++;
}
return dataSource.getConnection();
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Fix the underlying database connectivity problem so retries do not linger (network, firewall, max_connections, credentials)
- Re-run the job once the database is reachable; the interrupt itself was likely an intentional shutdown
- Avoid cancelling the job repeatedly while connection acquisition is in flight; increase connect.max-retries so attempts succeed sooner
- If interruptions happen without user cancellation, check for overly aggressive cluster shutdown/timeout settings
Example fix
// before // job cancelled while DB unreachable -> interrupted during retry sleep url = "jdbc:mysql://localhost:3306" // DB down // after // fix DB reachability first url = "jdbc:mysql://db-host:3306" // reachable; connect succeeds on first attempt
Defensive patterns
Strategy: retry
Validate before calling
// verify reachability before submitting nc -vz $DB_HOST $DB_PORT
Try / catch
try {
connection = jdbcConnectionFactory.connect();
} catch (SeaTunnelException e) {
if (e.getCause() instanceof InterruptedException) {
// job was interrupted during retry; treat as shutdown, don't auto-retry here
}
} Prevention
- Avoid cancelling jobs while connection retries are in flight
- Resolve DB connectivity before job submission so retry sleeps are never reached
- Monitor job shutdown behavior to prevent spurious interrupts
When it happens
Trigger: A SQLException occurs on a non-final retry, then the worker thread sleeping 300ms between attempts receives an interrupt (task cancel/shutdown, Thread.interrupt from engine stop).
Common situations: Zeta engine job cancellation or node shutdown while a CDC source is stuck retrying a dead/overloaded database connection; operator kills the job during retry backoff.
Understand the failure class
Background: Request timed out: what client-side request timeouts mean across libraries (Request timed out, TIMED_OUT, APITimeoutError) — this error's family across 39 libraries.
Related errors
- Get connection failed after retry times
- Failed to discover remaining tables to capture
- Error to check tables:
- Failed to disable auto commit for Db2 CDC connection
- Interrupted while reading structure of schema
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/f56dce0f90fad044.
Report an issue: GitHub.