pentaho/pentaho-kettle · error · KettleException
Unable to load slave server from the file repository
Error message
Unable to load slave server from the file repository
What it means
KettleFileRepository.loadSlaveServer() throws this KettleException when it cannot parse or locate the slave server XML node for the given ObjectId. Slave servers are stored as XML fragments in the file repository; loadNodeFromXML() failure or bad XML content triggers it.
Solutions
- Inspect the cause to determine whether the file is missing or the XML is invalid
- Verify the slave server file exists under the repository base directory
- Re-create the slave server definition via Spoon and re-save it to the repository
- Refresh the directory tree and re-resolve the slave server ObjectId
Defensive patterns
Strategy: try-catch
Validate before calling
if (!repo.exists(idSlaveServer)) {
throw new IllegalStateException("Slave server id not found: " + idSlaveServer);
} Try / catch
try {
SlaveServer slave = repo.loadSlaveServer(id, null);
} catch (KettleException e) {
log.error("Slave server load failed, check XML file integrity", e);
} Prevention
- Do not hand-edit slave server XML files
- Re-save slave definitions from Spoon after upgrades
- Refresh directory listings before resolving ids
When it happens
Trigger: Calling loadSlaveServer(ObjectId id_slave_server, String versionName) when the id points to a missing file, the XML file is corrupt or does not contain the SlaveServer.XML_TAG node, or loadNodeFromXML throws.
Common situations: Slave server definition file manually edited or truncated; repository copied partially leaving slave definitions behind; id obtained from an out-of-date directory listing after the slave file was deleted.
Understand the failure class
Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.
Related errors
- TransMeta.Log.UnableToReadSlaveServersFromRepository
- Unable to load slave server with id [idSlaveServer]
- Unexpected error reading step information from the…
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
- AccessInputMeta.Exception.ErrorReadingRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/1bb8be52125f96d3.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java:1090
}
return list;
} catch ( Exception e ) {
throw new KettleException( "Unable to get list of jobs in folder with id : " + id_directory, e );
}
}
public int getNrSubDirectories( ObjectId id_directory ) throws KettleException {
return 0;
}
@Override
public SlaveServer loadSlaveServer( ObjectId id_slave_server, String versionName ) throws KettleException {
try {
return new SlaveServer( loadNodeFromXML( id_slave_server, SlaveServer.XML_TAG ) );
} catch ( Exception e ) {
throw new KettleException( "Unable to load slave server from the file repository", e );
}
}
@Override
public TransMeta loadTransformation( String transname, RepositoryDirectoryInterface repdir,
ProgressMonitorListener monitor, boolean setInternalVariables, String versionName ) throws KettleException {
// This is a standard load of a transformation serialized in XML...
//
String filename = calcDirectoryName( repdir ) + transname + ".ktr";
TransMeta transMeta = new TransMeta( DefaultBowl.getInstance(), filename, this, setInternalVariables );
transMeta.setRepository( this );
transMeta.setMetaStore( MetaStoreConst.getDefaultMetastore() );
transMeta.setFilename( null );
transMeta.setName( transname );
transMeta.setObjectId( new StringObjectId( calcObjectId( repdir, transname, EXT_TRANSFORMATION ) ) );
transMeta.clearChanged();View on GitHub (pinned to f3058517a1)