apache/seatunnel · warning
Failed to create RetryingMetaStoreClient proxy, falling back
Error message
Failed to create RetryingMetaStoreClient proxy, falling back to HiveMetaStoreClient
What it means
While creating the RetryingMetaStoreClient proxy reflectively, an unexpected exception occurred (InvocationTargetException from getProxy, security/illegal access, etc.). The catalog logs this warning with the cause and falls back to instantiating a plain HiveMetaStoreClient; the metastore client still works but without the retry wrapper.
Source
Thrown at seatunnel-connectors-v2/connector-hive/src/main/java/org/apache/seatunnel/connectors/seatunnel/hive/utils/HiveMetaStoreCatalog.java:253
if (getProxyMethod == null) {
log.warn(RETRYING_METASTORE_CLIENT_NO_COMPATIBLE_GET_PROXY_MESSAGE);
return null;
}
Object proxy = getProxyMethod.invoke(null, hiveConf, true);
if (proxy instanceof IMetaStoreClient) {
log.info(
"Using RetryingMetaStoreClient for Hive metastore connection [uris={}]",
hiveConf.get("hive.metastore.uris"));
return (IMetaStoreClient) proxy;
}
log.warn(RETRYING_METASTORE_CLIENT_NO_COMPATIBLE_GET_PROXY_MESSAGE);
return null;
} catch (ClassNotFoundException e) {
log.debug("RetryingMetaStoreClient not found, falling back to HiveMetaStoreClient", e);
return null;
} catch (Exception e) {
log.warn(
"Failed to create RetryingMetaStoreClient proxy, falling back to HiveMetaStoreClient",
e);
return null;
}
}
private static Method getProxyMethod(Class<?> clazz) {
// Hive 2.x: getProxy(HiveConf, boolean)
// Hive 3.x: getProxy(Configuration, boolean)
Method method = null;
try {
method = clazz.getDeclaredMethod("getProxy", HiveConf.class, boolean.class);
} catch (NoSuchMethodException ignored) {
}
if (method == null) {
try {
method = clazz.getDeclaredMethod("getProxy", Configuration.class, boolean.class);
} catch (NoSuchMethodException ignored) {View on GitHub (pinned to cf67b549a7)
Solutions
- Read the logged cause 'e' — it names the real failure (often metastore connect or missing class)
- Fix the underlying metastore configuration (uris, auth) that made the proxy creation fail
- If caused by reflection limits, run on a JDK or with flags permitting the reflective access
- Verify the Hive client jars are complete and consistent; then rely on the fallback or align versions
Example fix
// before "hive.metastore.uris" = "" // empty causes proxy creation failure // after "hive.metastore.uris" = "thrift://metastore-host:9083"
Defensive patterns
Strategy: try-catch
Validate before calling
try {
new HiveMetaStoreClient(hiveConf).close(); // fails fast with the real cause
} catch (MetaException e) {
throw new IllegalStateException("Metastore config invalid: " + e.getMessage(), e);
} Try / catch
try {
client = (IMetaStoreClient) getProxyMethod.invoke(null, hiveConf, true);
} catch (Exception e) {
log.warn("RetryingMetaStoreClient proxy failed; using HiveMetaStoreClient", e);
client = new HiveMetaStoreClient(hiveConf);
} Prevention
- Always read the logged cause 'e' — it carries the true metastore failure
- Validate hive.metastore.uris before job submission
- Run on a JDK that permits the needed reflective access
- Ensure the full Hive client dependency tree is shipped
When it happens
Trigger: tryCreateRetryingClient() catches Exception from getProxyMethod.invoke(null, hiveConf, true) — e.g. the underlying HiveMetaStoreClient constructor inside the proxy failed (bad metastore URIs), reflection access restrictions, or missing transitive Hive classes.
Common situations: Metastore misconfiguration surfaced through the proxy factory, Java module/access restrictions on newer JDKs, incomplete Hive dependency set.
Related errors
- RetryingMetaStoreClient found but no compatible getProxy met
- GET_HIVE_TABLE_INFORMATION_FAILED
- Hive metastore_uri is required for regex table discovery (us
- No hive tables matched the regex pattern. Please check `tabl
- Unable to load Hive metastore client factory ${clientFactory
AI-assisted analysis of apache/seatunnel@cf67b549a7 (2026-09-10).
Data as JSON: /api/errors/705c6c8e81c27603.
Report an issue: GitHub.