pentaho/pentaho-kettle · error · KettleException
Unable to get list of transformations in folder with id : +…
Error message
Unable to get list of transformations in folder with id : + idDirectory
What it means
getTransformationObjects(idDirectory, includeDeleted) returns ObjectRevision listings for transformations in a folder; any exception while reading/collecting those objects is wrapped in this KettleException that includes the folder id. The cause holds the underlying I/O or XML failure.
Solutions
- Resolve a fresh directory ObjectId via loadRepositoryDirectoryTree()/findDirectory before listing
- Ensure the running user can read the repository folder and its metadata files
- Check e.getCause() for the concrete failure and fix storage/sync issues
- Refresh repository state after any out-of-band modification of folders
Example fix
// before
List<RepositoryElementMetaInterface> objs = repository.getTransformationObjects(dirId, false);
// after
RepositoryDirectoryInterface dir = repository.findDirectory("/prod/etl");
if (dir == null) throw new KettleException("/prod/etl missing in repository");
List<RepositoryElementMetaInterface> objs = repository.getTransformationObjects(dir.getObjectId(), false); Defensive patterns
Strategy: validation
Validate before calling
RepositoryDirectoryInterface dir = repository.findDirectory(folderPath);
if (dir == null) throw new KettleException("Folder " + folderPath + " not found in repository");
ObjectId dirId = dir.getObjectId(); Try / catch
try {
objects = repository.getTransformationObjects(dirId, false);
} catch (KettleException e) {
logger.error("getTransformationObjects failed for " + dirId + ": " + e.getCause(), e);
throw e;
} Prevention
- Always derive folder ObjectIds from a fresh directory tree load
- Grant the runtime user read access to repository folders
- Coordinate external edits/renames of repository folders with scheduled jobs
When it happens
Trigger: Calling getTransformationObjects with a stale or nonexistent idDirectory, or when reading the folder's object metadata files throws IOException or XML parsing errors.
Common situations: Folder renamed/deleted externally while the client holds the old ObjectId; read-permission issues after deployment to a service account; partially synced repository folders on shared storage.
Related errors
- Unable to get list of transformations names in folder with…
- Unable to get root object ids for extension [ + extension +…
- Unable to load the directory tree from this file repository
- Unable to write log entry to file [ + logfile + ]
- Class [ + repositoryElement.getClass().getName() + ] needs…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/1f49833163061960.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java:1040
String name = child.getName().getBaseName();
if ( name.endsWith( EXT_TRANSFORMATION ) ) {
String transName = name.substring( 0, name.length() - 4 );
ObjectId id = new StringObjectId( calcObjectId( directory, transName, EXT_TRANSFORMATION ) );
Date date = new Date( child.getContent().getLastModifiedTime() );
list.add( new RepositoryObject(
id, transName, directory, "-", date, RepositoryObjectType.TRANSFORMATION, "", false ) );
}
}
}
}
return list;
} catch ( Exception e ) {
throw new KettleException( "Unable to get list of transformations in folder with id : " + idDirectory, e );
}
}
@Override
public List<RepositoryElementMetaInterface> getJobObjects( ObjectId id_directory, boolean includeDeleted ) throws KettleException {
try {
List<RepositoryElementMetaInterface> list = new ArrayList<RepositoryElementMetaInterface>();
RepositoryDirectoryInterface tree = loadRepositoryDirectoryTree();
RepositoryDirectoryInterface directory = tree.findDirectory( id_directory );
String folderName = calcDirectoryName( directory );
FileObject folder = KettleVFS.getInstance( DefaultBowl.getInstance() ).getFileObject( folderName );
for ( FileObject child : folder.getChildren() ) {
if ( child.getType().equals( FileType.FILE ) ) {
if ( !child.isHidden() || !repositoryMeta.isHidingHiddenFiles() ) {View on GitHub (pinned to f3058517a1)