apache/seatunnel · error · SeaTunnelException
Failed to execute HTTP request to Firebase endpoint
Error message
Failed to execute HTTP request to Firebase endpoint
What it means
executeGet catches IOException from the underlying HttpURLConnection (connect/read failures) and wraps it in this SeaTunnelException. It indicates the HTTP request to Firebase never completed at the transport level — DNS failure, connection refused/reset, timeout, or SSL error. The original IOException is preserved as the cause.
Source
Thrown at seatunnel-connectors-v2/connector-firebase/src/main/java/org/apache/seatunnel/connectors/seatunnel/firebase/client/FirebaseHttpClient.java:219
new BufferedReader(
new InputStreamReader(
inputStream, StandardCharsets.UTF_8))) {
StringBuilder responseBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
responseBuilder.append(line);
}
return responseBuilder.toString();
}
} else {
String rawErrorBody = readErrorStream(connection);
throw new SeaTunnelException(
String.format(
"Firebase HTTP request failed with status code %d. Response body: %s",
responseCode, rawErrorBody.isEmpty() ? "N/A" : rawErrorBody));
}
} catch (IOException e) {
throw new SeaTunnelException("Failed to execute HTTP request to Firebase endpoint", e);
} finally {
if (connection != null) {
connection.disconnect();
}
}
}
private String encodeUriComponent(String value) {
try {
return URLEncoder.encode(value, StandardCharsets.UTF_8.name())
.replaceAll("\\+", "%20"); // Handle space encoding for URIs
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
private String readErrorStream(HttpURLConnection connection) {
InputStream errorStream = connection.getErrorStream();View on GitHub (pinned to cf67b549a7)
Solutions
- Inspect the wrapped IOException cause to identify DNS vs connect vs SSL vs timeout failure.
- Increase timeout_ms if reads are timing out on slow networks.
- Configure JVM proxy settings (https.proxyHost/https.proxyPort) if the environment requires a proxy.
- Add retry with backoff for transient network errors.
Example fix
null
Defensive patterns
Strategy: retry
Validate before calling
InetAddress addr = InetAddress.getByName("mydb.firebaseio.com");
if (addr == null) throw new IllegalStateException("DNS cannot resolve Firebase host"); Try / catch
catch (SeaTunnelException e) { if (e.getCause() instanceof IOException) { retryWithBackoff(); } else { throw e; } } Prevention
- Verify network/DNS reachability from the job environment
- Set timeout_ms generously for slow networks
- Configure JVM proxy settings if behind a proxy
- Add retry with exponential backoff for transient IO failures
When it happens
Trigger: Network outage or DNS resolution failure for the Firebase host; connect timeout exceeded (timeout_ms too small); SSL handshake failure; connection reset by proxy/firewall.
Common situations: Running in an isolated network without internet or without proxy configuration; timeout_ms set too low for slow networks; TLS interception appliances breaking the handshake; transient network blips during long jobs.
Related errors
- Firebase HTTP request failed with status code %d. Response b
- Failed to read error stream from Firebase HTTP connection
- Failed to fetch metadata from Gravitino for metadata: %s
- fail get tableSchema:
- SEND_RESPONSE_FAILED
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/f4e074f7583c368f.
Report an issue: GitHub.