pentaho/pentaho-kettle · error · KettleException
Unable to get all slave server names
Error message
Unable to get all slave server names
What it means
PurRepository.getSlaveNames() collects titles of slave-server files in a directory and wraps any exception from the listing in this KettleException. It is a generic wrapper; the actionable information is in the cause chain.
Solutions
- Check e.getCause() for the underlying pur exception.
- Reconnect to the repository and retry the listing.
- Validate the directory id exists (getRepositoryDirectory) before listing.
- Verify read permissions on the target folder for the repository user.
Example fix
// before
String[] names = repo.getSlaveNames(dirId, false);
// after
try {
String[] names = repo.getSlaveNames(dirId, false);
} catch (KettleException e) {
log.error("slave name listing failed: " + e.getCause());
reconnectIfNeeded();
} Defensive patterns
Strategy: try-catch
Validate before calling
if (repo == null || !repo.isConnected()) throw new IllegalStateException("repository not connected");
if (dirId == null) throw new IllegalArgumentException("dirId required"); Type guard
boolean usable(Repository repo) { try { return repo != null && repo.isConnected(); } catch (Throwable t) { return false; } } Try / catch
try { return repo.getSlaveNames(dirId, false); } catch (KettleException e) { log.error("cause: ", e.getCause()); return new String[0]; } Prevention
- Keep sessions alive or reconnect on expiry
- Log the cause chain for diagnosis
- Validate directory existence before listing
When it happens
Trigger: Calling getSlaveNames(idDirectory, includeDeleted) when the underlying pur getChildren/file title access throws (bad directory id, connection loss, permission denial).
Common situations: Listing slaves from a stale or disconnected repository session; referencing a deleted directory; user lacks read rights on the folder; server-side repository error.
Understand the failure class
Background: "API request failed": what wrapped HTTP errors from external APIs mean and how to find the real cause — this error's family across 29 libraries.
Related errors
- Unable to get all partition schema names
- Unable to get all slave server IDs
- Unable to get all transformation names
- Unable to get list of objects from directory [dirId]
- Unable to load cluster schema with id [idClusterSchema]
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c2d8106f9cb87cb2.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:1665
ids.add( new StringObjectId( file.getId().toString() ) );
}
return ids.toArray( new ObjectId[ 0 ] );
} catch ( Exception e ) {
throw new KettleException( "Unable to get all slave server IDs", e );
}
}
@Override
public String[] getSlaveNames( boolean includeDeleted ) throws KettleException {
try {
List<RepositoryFile> children = getAllFilesOfType( null, RepositoryObjectType.SLAVE_SERVER, includeDeleted );
List<String> names = new ArrayList<String>();
for ( RepositoryFile file : children ) {
names.add( file.getTitle() );
}
return names.toArray( new String[ 0 ] );
} catch ( Exception e ) {
throw new KettleException( "Unable to get all slave server names", e );
}
}
@Override
@SuppressWarnings( "unchecked" )
public List<SlaveServer> getSlaveServers() throws KettleException {
return (List<SlaveServer>) loadAndCacheSharedObjects( true ).get( RepositoryObjectType.SLAVE_SERVER );
}
@Override
@SuppressWarnings( "unchecked" )
public List<DatabaseMeta> getConnections( boolean cached ) throws KettleException {
return (List<DatabaseMeta>) getRepositoryObjects( RepositoryObjectType.DATABASE, cached );
}
@Override
@SuppressWarnings( "unchecked" )
public List<SlaveServer> getSlaveServers( boolean cached ) throws KettleException {View on GitHub (pinned to f3058517a1)