pentaho/pentaho-kettle · error · KettleException
Unexpected error reading step information from the…
Error message
Unexpected error reading step information from the repository
What it means
SQLFileOutputMeta.readRep() loads the step's settings from the Pentaho Repository via rep.getStepAttribute* calls and wraps any failure in a KettleException 'Unexpected error reading step information from the repository'. It is a catch-all wrapper around repository reads for attributes like file_add_date, file_add_time, DoNotOpenNewFileInit.
Solutions
- Check the chained cause: verify the repository database is reachable and credentials are valid
- Validate the repository schema (r_step_attribute etc.) and repair/upgrade it with the repository upgrade tools
- Re-save the transformation/step from Spoon to rewrite its repository attributes
- Open the transformation from a file export instead to isolate whether the repository or the metadata is at fault
Example fix
// before: repository attribute hand-edited to a bad value UPDATE r_step_attribute SET value_str='maybe' WHERE code='DoNotOpenNewFileInit'; // after UPDATE r_step_attribute SET value_str='N' WHERE code='DoNotOpenNewFileInit';
Defensive patterns
Strategy: try-catch
Validate before calling
// Verify repository health before loading:
try ( Connection c = repositoryDatabase.connect() ) {
// ensure R_STEP_ATTRIBUTE is reachable
c.createStatement().executeQuery( "SELECT 1 FROM R_STEP_ATTRIBUTE" );
} Try / catch
try {
transMeta = repository.loadTransformation( id, null );
} catch ( KettleException e ) {
if ( e.getMessage().contains( "reading step information from the repository" ) ) {
log.error( "Repository read failed: {}", e.getCause() );
// fall back to loading a file export
}
} Prevention
- Keep repository schema upgraded to the PDI server version
- Never hand-edit repository tables directly
- Test repository connectivity before batch loads
- Keep file exports as backups of repository content
When it happens
Trigger: Opening a transformation from a repository when the repository is unreachable, the underlying database schema (r_step_attribute tables) is missing or corrupted, or a stored attribute value cannot be converted (e.g. non-boolean value for a boolean attribute).
Common situations: Repository database down or network interruption mid-load; repository schema version mismatch after a Pentaho upgrade; direct DB edits to repository tables that broke attribute values; permission problems reading repository tables.
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
- LDIFInputMeta.Exception.ErrorReadingRepository
- AddSequenceMeta.Exception.UnableToReadStepInfo
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
- GPBulkLoaderMeta.Exception.ErrorGettingFields
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/89db36e3b16527d5.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/sqlfileoutput/SQLFileOutputMeta.java:539
createTable = rep.getStepAttributeBoolean( id_step, "create" );
encoding = rep.getStepAttributeString( id_step, "encoding" );
dateformat = rep.getStepAttributeString( id_step, "dateformat" );
AddToResult = rep.getStepAttributeBoolean( id_step, "addtoresult" );
StartNewLine = rep.getStepAttributeBoolean( id_step, "startnewline" );
fileName = rep.getStepAttributeString( id_step, "file_name" );
extension = rep.getStepAttributeString( id_step, "file_extention" );
fileAppended = rep.getStepAttributeBoolean( id_step, "file_append" );
splitEvery = (int) rep.getStepAttributeInteger( id_step, "file_split" );
stepNrInFilename = rep.getStepAttributeBoolean( id_step, "file_add_stepnr" );
partNrInFilename = rep.getStepAttributeBoolean( id_step, "file_add_partnr" );
dateInFilename = rep.getStepAttributeBoolean( id_step, "file_add_date" );
timeInFilename = rep.getStepAttributeBoolean( id_step, "file_add_time" );
createparentfolder = rep.getStepAttributeBoolean( id_step, "create_parent_folder" );
DoNotOpenNewFileInit = rep.getStepAttributeBoolean( id_step, "DoNotOpenNewFileInit" );
} catch ( Exception e ) {
throw new KettleException( "Unexpected error reading step information from the repository", e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", databaseMeta );
rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
rep.saveStepAttribute( id_transformation, id_step, "table", tablename );
rep.saveStepAttribute( id_transformation, id_step, "truncate", truncateTable );
rep.saveStepAttribute( id_transformation, id_step, "create", createTable );
rep.saveStepAttribute( id_transformation, id_step, "encoding", encoding );
rep.saveStepAttribute( id_transformation, id_step, "dateformat", dateformat );
rep.saveStepAttribute( id_transformation, id_step, "addtoresult", AddToResult );
rep.saveStepAttribute( id_transformation, id_step, "startnewline", StartNewLine );
rep.saveStepAttribute( id_transformation, id_step, "file_name", fileName );
rep.saveStepAttribute( id_transformation, id_step, "file_extention", extension );
rep.saveStepAttribute( id_transformation, id_step, "file_append", fileAppended );View on GitHub (pinned to f3058517a1)