pentaho/pentaho-kettle · error · IllegalStateException

Unable to access run configuration manager

Error message

Unable to access run configuration manager

What it means

RunConfigurationDelegate.moveCopy() throws IllegalStateException when targetBowl.getManager(RunConfigurationService.class) fails with a KettleException, meaning the run configuration service manager could not be obtained for the target project/bowl. Copying or moving the run configuration cannot proceed.

Solutions

  1. Inspect the nested KettleException for why the RunConfigurationService manager lookup failed
  2. Restart PDI (Spoon) so all project plugins and bowls re-initialize
  3. Verify the target project is valid and properly initialized (check project configuration files)
  4. Recreate the target project if its bowl state is corrupted, then retry the copy/move
Defensive patterns

Strategy: try-catch

Try / catch

try {
  delegate.copyToProject( runConfiguration, targetProject );
} catch ( IllegalStateException e ) {
  logError( "Target project RunConfigurationService unavailable: " + e.getCause().getMessage() );
  // restart Spoon / reinitialize project before retrying
}

Prevention

When it happens

Trigger: Invoking copyToGlobalInternal, copyToProjectInternal, moveToGlobalInternal, or moveToProjectInternal when the target bowl cannot supply a RunConfigurationService — plugin not loaded, bowl initialization failed, or an internal KettleException in manager lookup.

Common situations: Copying run configurations to a project whose lifecycle/plugin registry failed to initialize, corrupted project metadata, or a PDI plugin loading problem in the target environment.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/648b9c0278bbd09d. Report an issue: GitHub.

Appendix: source

Thrown at plugins/engine-configuration/impl/src/main/java/org/pentaho/di/engine/ui/RunConfigurationDelegate.java:330

  private void moveToGlobalInternal( RunConfigurationService manager, RunConfiguration runConfiguration ) {
    moveCopy( manager, runConfiguration, spoonSupplier.get().getGlobalManagementBowl(), true );
  }

  public void moveToProject( RunConfigurationService manager, RunConfiguration runConfiguration ) {
    executeWithSessionRetry( () -> moveToProjectInternal( manager, runConfiguration ), "Error moving to project" );
  }

  private void moveToProjectInternal( RunConfigurationService manager, RunConfiguration runConfiguration ) {
    moveCopy( manager, runConfiguration, spoonSupplier.get().getManagementBowl(), true );
  }

  private void moveCopy( RunConfigurationService srcManager, RunConfiguration runConfiguration, Bowl targetBowl,
                         boolean deleteSource ) {
    RunConfigurationService targetManager;
    try {
      targetManager = targetBowl.getManager( RunConfigurationService.class );
    } catch ( KettleException e ) {
      throw new IllegalStateException( "Unable to access run configuration manager", e );
    }
    if ( targetManager.getNames().stream().anyMatch( element -> element.equalsIgnoreCase( runConfiguration.getName() ) ) ) {
      if ( !shouldOverwrite( BaseMessages.getString( PKG, "RunConfigurationDialog.OverwriteRunConfigurationYN",
        runConfiguration.getName() ) ) ) {
        return;
      } else {
        targetManager.delete( runConfiguration.getName() );
      }
    }
    targetManager.save( runConfiguration );
    if ( deleteSource ) {
      srcManager.delete( runConfiguration.getName() );
    }
    refreshTree();
  }

  protected boolean shouldOverwrite( String message ) {
    MessageBox mb = new MessageBox( spoonSupplier.get().getShell(), SWT.YES | SWT.NO | SWT.ICON_QUESTION );

View on GitHub (pinned to f3058517a1)