prestodb/presto · error · RuntimeException
RuntimeException(e)
Error message
RuntimeException(e)
What it means
The scheduler factory wraps any checked exception thrown while building the Guice injector for PlanCheckerRouterPluginScheduler into an unchecked RuntimeException. It exists so the factory's create() method satisfies its signature without declaring checked exceptions; the real cause is always the wrapped exception.
Source
Thrown at presto-plan-checker-router-plugin/src/main/java/com/facebook/presto/router/scheduler/PlanCheckerRouterPluginSchedulerFactory.java:51
{
return PLAN_CHECKER_ROUTER_PLUGIN;
}
@Override
public Scheduler create(Map<String, String> config)
{
try {
Bootstrap app = new Bootstrap(new PlanCheckerRouterPluginModule(), new MBeanModule());
Injector injector = app
.doNotInitializeLogging()
.setRequiredConfigurationProperties(config)
.initialize();
return injector.getInstance(PlanCheckerRouterPluginScheduler.class);
}
catch (Exception e) {
throwIfUnchecked(e);
throw new RuntimeException(e);
}
}
}
View on GitHub (pinned to 55bb57d202)
Solutions
- Read the caused-by chain of the RuntimeException to find the real failure
- Fix the plugin configuration properties that injector.initialize() rejected
- Verify the plugin JAR and its module classes are on the router's plugin classpath
- Log the full stack trace rather than only the top-level RuntimeException
Example fix
// bad diagnosis
log.error("scheduler creation failed");
// good diagnosis
log.error("scheduler creation failed", e); // inspect getCause() for the real config/validation error Defensive patterns
Strategy: try-catch
Validate before calling
// validate plugin config before create() // assert required properties exist and are parseable per PlanCheckerRouterPlugin's docs
Try / catch
try {
Scheduler scheduler = factory.create(config);
} catch (RuntimeException e) {
log.error("scheduler creation failed", e); // inspect getCause() chain
throw e;
} Prevention
- Always log the full stack trace including cause
- Validate configuration properties before instantiating the plugin
- Test plugin loading in CI with the production config file
When it happens
Trigger: create() fails during config loading, module setup, injector.initialize(), or any checked exception inside the try block; throwIfUnchecked rethrows unchecked ones directly, checked ones get wrapped in RuntimeException(e).
Common situations: Bad plugin properties in the router config file; a missing/invalid required configuration property; classpath issues loading plugin modules during deployment.
Related errors
- ARROW_INTERNAL_ERROR
- Unknown cluster Ttl provider manager
- Unknown Node Ttl Fetcher Manager:
- ACCUMULO_TABLE_EXISTS
- NOT_SUPPORTED
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/c8e96c04732dbaaa.
Report an issue: GitHub.