pentaho/pentaho-kettle · error · KettleException
FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo
Error message
FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo
What it means
FileExistsMeta.readRep() reads the step's attributes from the Kettle repository (filenamefield, resultfieldname, includefiletype, etc.) and wraps any repository exception in a KettleException with 'UnexpectedErrorReadingStepInfo'. It means the step's stored metadata could not be loaded from the repository database.
Solutions
- Check the repository database connectivity and retry loading the transformation.
- Verify the repository schema is upgraded to match the Pentaho version (repository upgrade tools).
- Inspect r_step_attribute rows for the step; re-save the step to regenerate them.
- Fall back to loading the transformation from a file export instead of the repository.
Example fix
// before
// load with stale repository connection -> readRep throws
// after
// reconnect/validate repository before loading
if (!rep.connect()) { rep.connect(); }
TransMeta tm = new TransMeta(rep, "MyTrans"); Defensive patterns
Strategy: retry
Validate before calling
if (!rep.getConnection().isValid(5)) {
throw new IllegalStateException("Repository connection is not healthy before load");
} Try / catch
try {
TransMeta tm = new TransMeta(rep, "MyTrans");
} catch (KettleException e) {
if (e.getMessage().contains("FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo")) {
// reconnect / check repository schema, then retry once
} else { throw e; }
} Prevention
- Verify repository DB connectivity before loading transformations.
- Keep the repository schema upgraded in lockstep with the Pentaho version.
- Avoid deleting repository rows manually.
- Keep file-based exports as a fallback source of truth.
When it happens
Trigger: Loading a transformation from a repository when the underlying r_step_attribute query fails: DB connection dropped, schema mismatch, corrupted or missing rows for id_step.
Common situations: Repository database outage mid-load; repository schema version mismatch after Pentaho upgrade; deleted attributes rows; repository connection timeout.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
- FileExistsMeta.Exception.UnableToSaveStepInfo
- GetPreviousRowFieldMeta.Exception.UnexpectedErrorInReadingSt…
- GetXMLDataMeta.Exception.ErrorReadingRepository (localized…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/228636cb7c9f1ae0.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/fileexists/FileExistsMeta.java:200
resultfieldname = XMLHandler.getTagValue( stepnode, "resultfieldname" );
includefiletype = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "includefiletype" ) );
filetypefieldname = XMLHandler.getTagValue( stepnode, "filetypefieldname" );
addresultfilenames = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "addresultfilenames" ) );
} catch ( Exception e ) {
throw new KettleXMLException(
BaseMessages.getString( PKG, "FileExistsMeta.Exception.UnableToReadStepInfo" ), e );
}
}
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
try {
filenamefield = rep.getStepAttributeString( id_step, "filenamefield" );
resultfieldname = rep.getStepAttributeString( id_step, "resultfieldname" );
includefiletype = rep.getStepAttributeBoolean( id_step, "includefiletype" );
filetypefieldname = rep.getStepAttributeString( id_step, "filetypefieldname" );
addresultfilenames = rep.getStepAttributeBoolean( id_step, "addresultfilenames" );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "filenamefield", filenamefield );
rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
rep.saveStepAttribute( id_transformation, id_step, "includefiletype", includefiletype );
rep.saveStepAttribute( id_transformation, id_step, "filetypefieldname", filetypefieldname );
rep.saveStepAttribute( id_transformation, id_step, "addresultfilenames", addresultfilenames );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "FileExistsMeta.Exception.UnableToSaveStepInfo" )
+ id_step, e );
}
}
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,View on GitHub (pinned to f3058517a1)