pentaho/pentaho-kettle · error · KettleException
Unable to load slave server with id [idSlaveServer]
Error message
Unable to load slave server with id [idSlaveServer]
What it means
PurRepository.loadSlaveServer(idSlaveServer, versionId, ignoreErrors) retrieves the slave-server file, its version summary, and assembles it via slaveTransformer; any exception in that chain is wrapped in this KettleException.
Solutions
- Check e.getCause() for the true failure (not-found vs connection vs transform).
- Refresh the id via getSlaveServerIDs()/getSlaveServers() and reload.
- Retry with versionId = null for the latest version.
- Reconnect to the repository and verify the slave server still exists.
Example fix
// before
SlaveServer ss = repo.loadSlaveServer(staleId, verId, false);
// after
try {
SlaveServer ss = repo.loadSlaveServer(staleId, null, false);
} catch (KettleException e) {
log.warn("slave server " + staleId + " load failed: " + e.getCause());
ss = null;
} Defensive patterns
Strategy: try-catch
Validate before calling
// verify the object still exists before loading boolean present = Arrays.asList(repo.getSlaveServerIDs(dirId)).contains(id);
Type guard
boolean loadable(ObjectId id) { return id != null && id.getId() != null && !id.getId().isEmpty(); } Try / catch
try { return repo.loadSlaveServer(id, null, false); } catch (KettleException e) { log.warn("slave server load failed: ", e.getCause()); return null; } Prevention
- Refresh ids from getSlaveServerIDs before load
- Reconnect if the session may have expired
- Handle deleted slave servers gracefully with null fallbacks
When it happens
Trigger: Calling loadSlaveServer with a stale/deleted ObjectId, an invalid versionId, a broken repository connection, or data that slaveTransformer cannot assemble.
Common situations: Slave server removed on the server while its id is still cached locally; ids taken from a different repository; session expiry making getFileById fail; upgrade-related data format changes.
Understand the failure class
Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.
Related errors
- Unable to load cluster schema with id [idClusterSchema]
- Unable to load partition schema with id [partitionSchemaId]
- TransMeta.Log.UnableToReadSlaveServersFromRepository
- Unable to get all partition schema names
- Unable to get all slave server IDs
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/1c476f7d774331b8.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:1939
}
@Override
public SlaveServer loadSlaveServer( ObjectId idSlaveServer, String versionId ) throws KettleException {
readWriteLock.readLock().lock();
try {
NodeRepositoryFileData
data =
pur.getDataAtVersionForRead( idSlaveServer.getId(), versionId, NodeRepositoryFileData.class );
RepositoryFile file = null;
if ( versionId != null ) {
file = pur.getFileAtVersion( idSlaveServer.getId(), versionId );
} else {
file = pur.getFileById( idSlaveServer.getId() );
}
return slaveTransformer.assemble( file, data, pur.getVersionSummary( idSlaveServer.getId(), versionId ) );
} catch ( Exception e ) {
throw new KettleException( "Unable to load slave server with id [" + idSlaveServer + "]", e );
} finally {
readWriteLock.readLock().unlock();
}
}
protected Map<RepositoryObjectType, List<? extends SharedObjectInterface<?>>> loadAndCacheSharedObjects(
final boolean deepCopy ) throws KettleException {
readWriteLock.readLock().lock();
sharedObjectsLock.writeLock().lock();
try {
if ( sharedObjectsByType == null ) {
sharedObjectsByType =
new EnumMap<RepositoryObjectType, List<? extends SharedObjectInterface<?>>>( RepositoryObjectType.class );
// Slave Servers are referenced by Cluster Schemas so they must be loaded first
readSharedObjects( sharedObjectsByType, RepositoryObjectType.DATABASE, RepositoryObjectType.PARTITION_SCHEMA,
RepositoryObjectType.SLAVE_SERVER, RepositoryObjectType.CLUSTER_SCHEMA );
}
return deepCopy ? deepCopy( sharedObjectsByType ) : sharedObjectsByType;View on GitHub (pinned to f3058517a1)