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

  1. Inspect the wrapped IOException cause to identify DNS vs connect vs SSL vs timeout failure.
  2. Increase timeout_ms if reads are timing out on slow networks.
  3. Configure JVM proxy settings (https.proxyHost/https.proxyPort) if the environment requires a proxy.
  4. 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

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


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