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
AddXMLMeta.readRep loads the step's settings from a repository (database) by calling rep.getStepAttributeInteger/Boolean/String. Any repository exception (connection failure, missing attributes, schema problems) is wrapped in a KettleException with this fixed message; the cause carries repository detail.
Solutions
- Check repository DB connectivity and re-open the transformation
- Verify r_step_attribute rows for the step id exist and are intact
- Re-save the step in Spoon to rewrite its repository attributes
- Check PDI version compatibility with the repository schema
Example fix
// before
KettleException ke; logError(ke.getMessage());
// after
logError("Repository read failed", ke); logError("Cause:", ke.getCause()); // then re-save the step Defensive patterns
Strategy: try-catch
Validate before calling
if (!repository.connect(login, password)) failFast("Repository connection unavailable before loading steps"); Try / catch
try { meta.readRep(repo, metaStore, idStep, databases); }
catch (KettleException e) {
logError("Repository read failed for step " + idStep, e.getCause());
} Prevention
- Verify repository connectivity before batch-loading transformations
- Re-save steps after PDI version upgrades
- Monitor repository DB health (locks, schema version)
When it happens
Trigger: readRep queries step attributes for id_step and the repository layer throws — e.g. the r_step_attribute rows are missing/corrupt or the repository connection breaks mid-read.
Common situations: Repository database upgraded/downgraded across PDI versions; interrupted metadata save leaving partial attribute rows; network/DB outage during transformation load.
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
- AccessInputMeta.Exception.ErrorReadingRepository
- AggregateRowsMeta.Exception.UnexpectedErrorWhileReadingStepInfo
- Unexpected error reading step information from the…
- XsdValidatorMeta.Exception.UnexpectedErrorInReadingStepInfo
- AddSequenceMeta.Exception.UnableToReadStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c475423df3a07640.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/addxml/AddXMLMeta.java:302
for ( int i = 0; i < nrfields; i++ ) {
outputFields[i] = new XMLField();
outputFields[i].setFieldName( rep.getStepAttributeString( id_step, i, "field_name" ) );
outputFields[i].setElementName( rep.getStepAttributeString( id_step, i, "field_element" ) );
outputFields[i].setType( rep.getStepAttributeString( id_step, i, "field_type" ) );
outputFields[i].setFormat( rep.getStepAttributeString( id_step, i, "field_format" ) );
outputFields[i].setCurrencySymbol( rep.getStepAttributeString( id_step, i, "field_currency" ) );
outputFields[i].setDecimalSymbol( rep.getStepAttributeString( id_step, i, "field_decimal" ) );
outputFields[i].setGroupingSymbol( rep.getStepAttributeString( id_step, i, "field_group" ) );
outputFields[i].setNullString( rep.getStepAttributeString( id_step, i, "field_nullif" ) );
outputFields[i].setLength( (int) rep.getStepAttributeInteger( id_step, i, "field_length" ) );
outputFields[i].setPrecision( (int) rep.getStepAttributeInteger( id_step, i, "field_precision" ) );
outputFields[i].setAttribute( rep.getStepAttributeBoolean( id_step, i, "field_attribute" ) );
outputFields[i].setAttributeParentName( rep.getStepAttributeString( id_step, i, "field_attributeName" ) );
}
} 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.saveStepAttribute( id_transformation, id_step, "encoding", encoding );
rep.saveStepAttribute( id_transformation, id_step, "valueName", valueName );
rep.saveStepAttribute( id_transformation, id_step, "xml_repeat_element", rootNode );
rep.saveStepAttribute( id_transformation, id_step, "omitXMLheader", omitXMLheader );
rep.saveStepAttribute( id_transformation, id_step, "omitNullValues", omitNullValues );
for ( int i = 0; i < outputFields.length; i++ ) {
XMLField field = outputFields[i];
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", field.getFieldName() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_element", field.getElementName() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_type", field.getTypeDesc() );View on GitHub (pinned to f3058517a1)