pentaho/pentaho-kettle · error · KettleException
Unable to get all transformation names
Error message
Unable to get all transformation names
What it means
PurRepository.getTransformationNames() lists transformation titles in a directory and wraps any failure of the pur listing call in this KettleException. The cause chain contains the real repository error.
Solutions
- Log e.getCause() to identify connection vs permission vs missing-directory failure.
- Reconnect to the repository and retry.
- Validate the directory id via getDirectory(idDirectory) before listing.
- Check server reachability and user read permissions on the folder.
Example fix
// before
String[] names = repo.getTransformationNames(dirId, false);
// after
try {
String[] names = repo.getTransformationNames(dirId, false);
} catch (KettleException e) {
log.error("transformation 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.getTransformationNames(dirId, false); } catch (KettleException e) { log.error("cause: ", e.getCause()); return new String[0]; } Prevention
- Re-resolve directories by path, not cached ids
- Handle server restarts by reconnecting
- Check user read permissions on the folder
When it happens
Trigger: Calling getTransformationNames(idDirectory, includeDeleted) when getChildren fails: invalid/deleted directory id, lost repository connection, server error, or permission denial.
Common situations: Stale session after Pentaho server restart; directory deleted concurrently; wrong directory id passed from another repository; network failure; insufficient read permissions.
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 slave server 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/080f926c926671f2.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:1756
String path = repositoryDirectory != null ? repositoryDirectory.toString() : "null";
throw new IdNotFoundException( "Unable to get ID for job [" + name + "]", e, name, path,
RepositoryObjectType.TRANSFORMATION );
}
}
@Override
public String[] getTransformationNames( ObjectId idDirectory, boolean includeDeleted ) throws KettleException {
try {
List<RepositoryFile>
children =
getAllFilesOfType( idDirectory, RepositoryObjectType.TRANSFORMATION, 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 transformation names", e );
}
}
@Override
public List<RepositoryElementMetaInterface> getTransformationObjects( ObjectId idDirectory, boolean includeDeleted )
throws KettleException {
return getPdiObjects( idDirectory, Arrays
.asList( new RepositoryObjectType[] { RepositoryObjectType.TRANSFORMATION } ), includeDeleted );
}
protected List<RepositoryElementMetaInterface> getPdiObjects( ObjectId dirId, List<RepositoryObjectType> objectTypes,
boolean includeDeleted ) throws KettleException {
readWriteLock.readLock().lock();
try {
RepositoryFile dirFile;
dirFile = pur.getFileById( dirId.getId() );
View on GitHub (pinned to f3058517a1)