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

  1. Read the caused-by chain of the RuntimeException to find the real failure
  2. Fix the plugin configuration properties that injector.initialize() rejected
  3. Verify the plugin JAR and its module classes are on the router's plugin classpath
  4. 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

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


AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04). Data as JSON: /api/errors/c8e96c04732dbaaa. Report an issue: GitHub.