pentaho/pentaho-kettle · error · KettleException
DefaultRunConfigurationExecutor.RemoteNotFound.Error
DefaultRunConfigurationExecutor.RemoteNotFound.Error
Error message
DefaultRunConfigurationExecutor.RemoteNotFound.Error
What it means
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.
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
Defensive patterns
Strategy: validation
Validate before calling
boolean slaveExists = transMeta.getSlaveServers().stream()
.anyMatch( s -> s.getName().equalsIgnoreCase( runConfig.getServer() ) );
if ( !slaveExists ) {
throw new IllegalArgumentException(
"Run configuration references unknown slave server: " + runConfig.getServer() );
} Try / catch
try {
executor.configureTransExecution( execConfig, meta, ... );
} catch ( KettleException e ) {
if ( e.getMessage().contains( "RemoteNotFound" ) ) {
// fall back to local execution or prompt for a valid slave server
}
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- JobTrans.Exception.UnableToFindRemoteSlaveServer
- PanTransformationDelegate.Error.NoRemoteServerSpecified
- RunConfigurationRunExtensionPoint.ConfigNotFound.Error
- There was an error passing the exported transformation to…
- There was an error posting the transformation on the remote…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d9a1fd67cadfe25d.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/engine-configuration/impl/src/main/java/org/pentaho/di/engine/configuration/impl/pentaho/DefaultRunConfigurationExecutor.java:118
setSlaveServer( jobExecutionConfiguration, meta, defaultRunConfiguration, variableSpace );
}
jobExecutionConfiguration.setPassingExport( defaultRunConfiguration.isSendResources() );
if ( defaultRunConfiguration.isPentaho() && repository != null ) {
sendNow( repository, (AbstractMeta) variableSpace );
}
}
private void setSlaveServer( ExecutionConfiguration executionConfiguration, AbstractMeta meta,
DefaultRunConfiguration defaultRunConfiguration,
VariableSpace variableSpace ) throws KettleException {
SlaveServer slaveServer = meta.findSlaveServer( defaultRunConfiguration.getServer() );
executionConfiguration.setRemoteServer( slaveServer );
if ( slaveServer == null ) {
String filename = "";
if ( variableSpace instanceof AbstractMeta ) {
filename = ( (AbstractMeta) variableSpace ).getFilename();
}
throw new KettleException( BaseMessages
.getString( PKG, "DefaultRunConfigurationExecutor.RemoteNotFound.Error", filename,
defaultRunConfiguration.getName(), "{0}", defaultRunConfiguration.getServer() ) );
}
}
private void sendNow( Repository repository, AbstractMeta meta ) {
try {
if ( meta instanceof TransMeta ) {
Spoon.getInstance().getActiveTransGraph().handleTransMetaChanges( (TransMeta) meta );
} else {
Spoon.getInstance().getActiveJobGraph().handleJobMetaChanges( (JobMeta) meta );
}
} catch ( Exception e ) {
// Ignore an exception if occurs
}
if ( !meta.hasChanged() ) {
SchedulerRequest.Builder builder = new SchedulerRequest.Builder();View on GitHub (pinned to f3058517a1)