apache/seatunnel · error · RuntimeException
Response JSON has no '%s' field
Error message
Response JSON has no '%s' field
What it means
GravitinoClient.getRequiredNode walked the JSON response returned by the Gravitino REST API and could not find the named child field on the expected node — e.g. a 'catalog', 'schema', or 'metadata' field missing from an otherwise successful response. This usually means an API version/shape mismatch between the client and the Gravitino server, or the server returned an error body where the client expected a success payload. Callers such as getTableSchema, getMetaInfo, and catalogNode rely on this helper.
Source
Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/gravitino/GravitinoClient.java:220
Thread.sleep(millis);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.debug("Sleep interrupted during retry backoff", e);
}
}
/**
* Get a required child node from parent node, throw exception if not found.
*
* @param parentNode the parent JSON node
* @param fieldName the field name to retrieve
* @return the child node
* @throws RuntimeException if the field is not present
*/
private JsonNode getRequiredNode(JsonNode parentNode, String fieldName) {
JsonNode node = parentNode.get(fieldName);
if (node == null) {
throw new RuntimeException(String.format(ERROR_MISSING_FIELD_TEMPLATE, fieldName));
}
return node;
}
/** Close the HTTP client and release resources. Safe to call multiple times. */
@Override
public void close() {
if (httpClient != null) {
try {
httpClient.close();
} catch (IOException e) {
// Ignore close exception as HttpClient is being shut down anyway
log.debug("Failed to close HTTP client, ignoring", e);
}
}
}
}
View on GitHub (pinned to cf67b549a7)
Solutions
- Enable debug logging of the raw Gravitino HTTP response to see the actual JSON body returned
- Check that the Gravitino server version matches the API shape this client expects (upgrade the client or server)
- If the response is an error payload, address the underlying Gravitino-side error (auth, missing metalake/catalog) that produced it
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at seatunnel-api/src/main/java/org/apache/seatunnel/api/metalake/gravitino/GravitinoClient.java:220 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/f240dfc997cdc851.
Report an issue: GitHub.