pentaho/pentaho-kettle · error · KettleException
Unable to get object information for object with id= +…
Error message
Unable to get object information for object with id= + objectId
What it means
KettleFileRepository.getObjectInformation() throws this KettleException when it cannot gather metadata (name, directory, last-modified time, type) for the repository object with the given ObjectId. Typically the underlying VFS FileObject cannot be resolved or read.
Solutions
- Inspect the cause to see which file path failed
- Verify the object file exists in the repository base directory
- Refresh the repository directory tree and re-resolve the ObjectId
- Check base_directory configuration and filesystem permissions
Example fix
// before
RepositoryObject info = repo.getObjectInformation(id, RepositoryObjectType.TRANSFORMATION); // throws if missing
// after
if (repo.exists(id)) { // or wrap in try-catch for KettleException
RepositoryObject info = repo.getObjectInformation(id, RepositoryObjectType.TRANSFORMATION);
} Defensive patterns
Strategy: try-catch
Validate before calling
if (!repo.exists(objectId)) {
throw new IllegalStateException("Object missing: " + objectId);
} Try / catch
try {
RepositoryObject info = repo.getObjectInformation(id, RepositoryObjectType.JOB);
} catch (KettleException e) {
log.error("Object info unavailable for " + id, e);
} Prevention
- Verify object existence before requesting metadata
- Keep base_directory configuration consistent across clients
- Refresh directory tree after external file changes
When it happens
Trigger: Calling getObjectInformation(ObjectId, RepositoryObjectType) when the object's file does not exist under the resolved directory path, the directory id does not resolve, or reading content.lastModifiedTime fails.
Common situations: File deleted externally after being listed; typo'd or stale object id; repository base directory misconfigured so relative paths resolve incorrectly; also hit indirectly via loadJob()/loadTransformation() which call getObjectInformation first.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- AutoDoc.Exception.RepositoryDirectoryNotFound
- Could not find folder [ + id + ]
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
- FieldSplitterMeta.Exception.UnalbeToSaveStepInfoToRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/97acdcb4cd7774ea.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java:1442
FileName fname = fileObject.getName();
String name = fname.getBaseName();
if ( !Utils.isEmpty( fname.getExtension() ) && name.length() > fname.getExtension().length() ) {
name = name.substring( 0, name.length() - fname.getExtension().length() - 1 );
}
String filePath = fileObject.getParent().getName().getPath();
final FileObject baseDirObject = KettleVFS.getInstance( DefaultBowl.getInstance() )
.getFileObject( repositoryMeta.getBaseDirectory() );
final int baseDirObjectPathLength = baseDirObject.getName().getPath().length();
final String dirPath =
baseDirObjectPathLength <= filePath.length() ? filePath.substring( baseDirObjectPathLength ) : "/";
RepositoryDirectoryInterface directory = loadRepositoryDirectoryTree().findDirectory( dirPath );
Date lastModified = new Date( fileObject.getContent().getLastModifiedTime() );
return new RepositoryObject( objectId, name, directory, "-", lastModified, objectType, "", false );
} catch ( Exception e ) {
throw new KettleException( "Unable to get object information for object with id=" + objectId, e );
}
}
@Override
public JobMeta loadJob( ObjectId idJob, String versionLabel ) throws KettleException {
RepositoryObject jobInfo = getObjectInformation( idJob, RepositoryObjectType.JOB );
return loadJob( jobInfo.getName(), jobInfo.getRepositoryDirectory(), null, versionLabel );
}
@Override
public TransMeta loadTransformation( ObjectId idTransformation, String versionLabel ) throws KettleException {
RepositoryObject jobInfo = getObjectInformation( idTransformation, RepositoryObjectType.TRANSFORMATION );
return loadTransformation( jobInfo.getName(), jobInfo.getRepositoryDirectory(), null, true, versionLabel );
}
@Override
public String getConnectMessage() {
return null;View on GitHub (pinned to f3058517a1)