apache/seatunnel · warning
Failed to get HTTP port from member {}, skip.
Error message
Failed to get HTTP port from member {}, skip. What it means
When enumerating log file names across all cluster nodes, LogService asks each member for its HTTP port via GetNodeHttpPortOperation. If that call fails for a member (timeout, member unreachable, operation exception), this warning is logged and the member is skipped, so its logs are absent from the aggregated list.
Source
Thrown at seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/LogService.java:81
HttpConfig httpConfig =
seaTunnelServer.getSeaTunnelConfig().getEngineConfig().getHttpConfig();
String contextPath = httpConfig.getContextPath();
List<Tuple3<String, String, String>> allLogNameList = new ArrayList<>();
for (Member member : nodeEngine.getClusterService().getMembers()) {
String host = member.getAddress().getHost();
int nodeHttpPort;
try {
nodeHttpPort =
(int)
NodeEngineUtil.sendOperationToMemberNode(
nodeEngine,
new GetNodeHttpPortOperation(),
member.getAddress())
.get();
} catch (Exception e) {
log.warn("Failed to get HTTP port from member {}, skip.", member.getAddress(), e);
continue;
}
String url = "http://" + host + ":" + nodeHttpPort + contextPath;
String logUrl = url + REST_URL_GET_ALL_LOG_NAME;
String allName =
httpConfig.isEnableBasicAuth()
? sendGet(
logUrl,
httpConfig.getBasicAuthUsername(),
httpConfig.getBasicAuthPassword())
: sendGet(logUrl);
if (StringUtils.isBlank(allName)) {
log.warn("GET {} returned empty body (null/empty). Skip this node.", logUrl);
continue;
}View on GitHub (pinned to cf67b549a7)
Solutions
- Check that the reported member is alive and its HTTP connector is enabled (http config in seatunnel.yaml / hazelcast config).
- Fix network/firewall so the coordinator can reach the member's REST port.
- Restart the failed member; verify the REST endpoint responds locally on that node.
- If intentional (node being removed), ignore the warning or exclude the member from the cluster properly.
Example fix
// before (seatunnel.yaml, http disabled on one node) // http: enable: false // after // http: enable: true // port: 8080
Defensive patterns
Strategy: retry
Validate before calling
// pre-check each member is reachable before listing logs
// for (Member m : members) {
// if (!isPortOpen(m.getAddress().getHost(), restPort(m), timeoutMs)) {
// skip(m); // avoid the warn+skip path
// }
// } Try / catch
try {
int port = (int) NodeEngineUtil.sendOperationToMemberNode(nodeEngine, new GetNodeHttpPortOperation(), member.getAddress()).get();
} catch (Exception e) {
log.warn("Member {} unreachable for HTTP port, skipping logs", member.getAddress(), e);
} Prevention
- Enable the HTTP connector on every node with a consistent port
- Keep inter-node REST ports open in firewalls
- Monitor node liveness before issuing cluster-wide log queries
When it happens
Trigger: Calling the all-log-names REST endpoint when one member is down, network partitioned, or its REST/HTTP service failed to start (port conflict, http disabled in config), making GetNodeHttpPortOperation hang or throw.
Common situations: Node crashed or being decommissioned during the request; seatunnel http port disabled/misconfigured on one node; firewall blocking inter-member REST port; slow node exceeding operation timeout.
Understand the failure class
Background: ECONNREFUSED and "connection refused" / "could not connect to server" errors: what they mean and how to fix them — this error's family across 44 libraries.
Related errors
- Failed to get cluster members information
- Cluster name is required. Please specify it using -cn or --c
- cluster: %s is not running, Please start the cluster first.
- cluster have no master node
- Invalid target address: NULL
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/e479e1cd806e68c0.
Report an issue: GitHub.