apache/seatunnel · warning
Failed to get info from node: {}
Error message
Failed to get info from node: {} What it means
JedisWrapper.info() traverses every node of a Redis cluster attempting to run the INFO command; when a node fails it logs this warning ('Failed to get info from node: {}') and moves on. If every node fails, a RedisConnectorException (GET_REDIS_INFO_ERROR, 'Failed to get redis info from all node in cluster') is thrown. The warning identifies which specific node was unreachable or errored.
Source
Thrown at seatunnel-connectors-v2/connector-redis/src/main/java/org/apache/seatunnel/connectors/seatunnel/redis/config/JedisWrapper.java:109
public List<String> zrange(final String key, final long start, final long stop) {
return jedisCluster.zrange(key, start, stop);
}
@Override
public String info() {
Map<String, ConnectionPool> nodes = jedisCluster.getClusterNodes();
if (nodes.isEmpty()) {
throw new RedisConnectorException(
GET_REDIS_INFO_ERROR, "No available nodes in cluster");
}
// Traverse all nodes and try to obtain the info
for (Map.Entry<String, ConnectionPool> entry : nodes.entrySet()) {
try {
Jedis jedis = getJedis(entry.getKey());
return jedis.info();
} catch (Exception e) {
log.warn("Failed to get info from node: {}", entry.getKey(), e);
}
}
throw new RedisConnectorException(
GET_REDIS_INFO_ERROR, "Failed to get redis info from all node in cluster");
}
@Override
public String type(String key) {
return jedisCluster.type(key);
}
public Map<String, ConnectionPool> getClusterNodes() {
return jedisCluster.getClusterNodes();
}
@Override
public long expire(final String key, final long seconds) {View on GitHub (pinned to cf67b549a7)
Solutions
- Check connectivity from the SeaTunnel worker to every cluster node listed by CLUSTER NODES (host/port reachable, not firewalled).
- Verify redis auth configuration (password/user) matches the Redis server; test with redis-cli -h <host> -p <port> -a <pass> info.
- Ensure at least one cluster node is healthy — the method succeeds as soon as any node returns info; repair or remove dead nodes.
- Confirm cluster mode config in SeaTunnel matches the actual Redis deployment (cluster vs standalone/sentinel).
- Inspect the attached exception in the warning log for the root cause (timeouts, NOAUTH, connection refused).
Example fix
// before
JedisWrapper wrapper = new JedisWrapper(clusterConfig);
String info = wrapper.info(); // throws if all nodes fail
// after
try {
String info = wrapper.info();
} catch (RedisConnectorException e) {
// log per-node warnings above to identify the unhealthy nodes
log.error("Redis cluster unreachable, check node connectivity/auth", e);
} Defensive patterns
Strategy: retry
Validate before calling
// before submitting the job, verify the cluster responds
try (Jedis jedis = new Jedis(host, port)) {
if (password != null) jedis.auth(password);
jedis.ping();
String info = jedis.info();
if (info == null || info.isEmpty()) throw new IllegalStateException("empty INFO");
} Type guard
boolean isClusterReachable(Set<String> nodes) {
return nodes != null && !nodes.isEmpty() && nodes.stream().anyMatch(n -> canPing(n));
} Try / catch
try {
String info = jedisWrapper.info();
} catch (RedisConnectorException e) {
if (e.getErrorCode() == GET_REDIS_INFO_ERROR) {
// inspect per-node warnings logged above, then retry or fail fast
}
} Prevention
- Monitor Redis cluster node health (CLUSTER INFO / CLUSTER NODES) before and during jobs
- Keep redis auth config in sync with the server (rotate passwords together)
- Ensure network/firewall rules allow worker → every cluster node
- Avoid pointing a cluster-mode client at a standalone or sentinel deployment
When it happens
Trigger: Calling JedisWrapper.info() against a Redis cluster where a node is down, connection refused/timed out, requires AUTH the client lacks, or otherwise fails jedis.info(); logged once per failing node before the final exception if all nodes fail.
Common situations: Partial cluster outage or node being rebalanced; Redis node behind firewall/NAT only reachable from some hosts; wrong password (RedisAuthenticationConfig) causing NOAUTH on each node; cluster nodes map stale after topology change; network DNS resolution failures in containerized deployments.
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
- RedisErrorCode-04
- RedisErrorCode-06
- Failed to get cluster members information
- HTTP ${code} from ${url}: ${errorBody}
- Failed to get HTTP port from member {}, skip.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/59f03d19a2ffc133.
Report an issue: GitHub.