{"record":{"id":"d9a1fd67cadfe25d","repo":"pentaho/pentaho-kettle","slug":"defaultrunconfigurationexecutor-remotenotfound-error","errorCode":"DefaultRunConfigurationExecutor.RemoteNotFound.Error","errorMessage":"DefaultRunConfigurationExecutor.RemoteNotFound.Error","messagePattern":"DefaultRunConfigurationExecutor\\.RemoteNotFound\\.Error","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/engine-configuration/impl/src/main/java/org/pentaho/di/engine/configuration/impl/pentaho/DefaultRunConfigurationExecutor.java","lineNumber":118,"sourceCode":"      setSlaveServer( jobExecutionConfiguration, meta, defaultRunConfiguration, variableSpace );\n    }\n    jobExecutionConfiguration.setPassingExport( defaultRunConfiguration.isSendResources() );\n    if ( defaultRunConfiguration.isPentaho() && repository != null ) {\n      sendNow( repository, (AbstractMeta) variableSpace );\n    }\n  }\n\n  private void setSlaveServer( ExecutionConfiguration executionConfiguration, AbstractMeta meta,\n                               DefaultRunConfiguration defaultRunConfiguration,\n                               VariableSpace variableSpace ) throws KettleException {\n    SlaveServer slaveServer = meta.findSlaveServer( defaultRunConfiguration.getServer() );\n    executionConfiguration.setRemoteServer( slaveServer );\n    if ( slaveServer == null ) {\n      String filename = \"\";\n      if ( variableSpace instanceof AbstractMeta ) {\n        filename = ( (AbstractMeta) variableSpace ).getFilename();\n      }\n      throw new KettleException( BaseMessages\n        .getString( PKG, \"DefaultRunConfigurationExecutor.RemoteNotFound.Error\", filename,\n          defaultRunConfiguration.getName(), \"{0}\", defaultRunConfiguration.getServer() ) );\n    }\n  }\n\n  private void sendNow( Repository repository, AbstractMeta meta ) {\n    try {\n      if ( meta instanceof TransMeta ) {\n        Spoon.getInstance().getActiveTransGraph().handleTransMetaChanges( (TransMeta) meta );\n      } else {\n        Spoon.getInstance().getActiveJobGraph().handleJobMetaChanges( (JobMeta) meta );\n      }\n    } catch ( Exception e ) {\n      // Ignore an exception if occurs\n    }\n\n    if ( !meta.hasChanged() ) {\n      SchedulerRequest.Builder builder = new SchedulerRequest.Builder();","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/engine-configuration/impl/src/main/java/org/pentaho/di/engine/configuration/impl/pentaho/DefaultRunConfigurationExecutor.java#L100-L136","documentation":"DefaultRunConfigurationExecutor.setSlaveServer() throws this KettleException when the run configuration selected for remote execution does not resolve to an actual slave server (slaveServer == null). The executor needs a remote Carte server to send the transformation/job to, and none was found for the configured server name.","triggerScenarios":"configureTransExecution()/configureJobExecution() applying a run configuration whose getServer() names a slave server that is not defined in the cluster schema / slave server list, so setSlaveServer() receives null.","commonSituations":"Migrating transformations between environments where the target has no matching slave server definition, deleted or renamed Carte slave servers, or run configurations pointing at servers defined only in another project.","solutions":["Define the slave server referenced by the run configuration (Tools > Slave servers) with the exact name","Edit the run configuration and select an existing, defined slave server","Verify cluster schema definitions include the referenced slave server","If local execution was intended, change the run configuration's execution location from Remote to Local"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"boolean slaveExists = transMeta.getSlaveServers().stream()\n  .anyMatch( s -> s.getName().equalsIgnoreCase( runConfig.getServer() ) );\nif ( !slaveExists ) {\n  throw new IllegalArgumentException(\n    \"Run configuration references unknown slave server: \" + runConfig.getServer() );\n}","typeGuard":null,"tryCatchPattern":"try {\n  executor.configureTransExecution( execConfig, meta, ... );\n} catch ( KettleException e ) {\n  if ( e.getMessage().contains( \"RemoteNotFound\" ) ) {\n    // fall back to local execution or prompt for a valid slave server\n  }\n}","preventionTips":["Define all slave servers referenced by run configurations in every environment","Keep cluster schema definitions in sync across environments","Switch to Local execution type when no remote server is intended"],"tags":["pdi","run-configuration","slave-server","remote-execution"],"backgroundTag":"record-not-found","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}