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
DataGridMeta.readRep loads the step's configuration from the repository (fields, data lines). Any repository access or conversion exception during this load is wrapped in this KettleException, aborting the step's loading from the repository.
Solutions
- Check the chained cause for the underlying repository/database error and fix connectivity or schema first.
- Verify repository schema version matches the Pentaho engine (run the repository upgrade/migration tool if needed).
- Re-save the transformation or re-create the Data Grid step to rewrite its repository attributes.
- Inspect r_step_attribute rows for the step's id_step and repair/restore missing attribute entries.
Example fix
// no code fix; operational repair example -- verify attributes exist SELECT * FROM r_step_attribute WHERE id_step = ? AND attribute_key LIKE 'field%';
Defensive patterns
Strategy: try-catch
Validate before calling
// before loading, verify repository reachability
if (!rep.isConnected()) throw new IllegalStateException("Repository not connected"); Type guard
boolean canLoad(Repository rep){ return rep != null && rep.isConnected(); } Try / catch
try { meta.readRep(rep, metaStore, id_step, databases); }
catch (KettleException e) {
logError("Repository read failed for step: " + e.getCause(), e);
// surface actionable DB error, don't swallow
} Prevention
- Keep repository schema version in sync with the engine.
- Check repository DB connectivity before opening transformations.
- Back up r_step_attribute before migrations.
- Inspect the chained cause for the true DB error.
When it happens
Trigger: readRep is invoked when opening a transformation stored in a repository, and repository reads (getStepAttributeString/int/table queries) fail or return data that breaks parsing — e.g. missing attribute rows, corrupted repository rows, or DB connectivity errors mid-read.
Common situations: Repository database schema out of sync with the engine version; network/database outage while opening a transformation; rows deleted or truncated in r_step_attribute.
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
- DBProcMeta.Exception.UnexpectedErrorReadingStepInfo
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
- AccessInputMeta.Exception.ErrorReadingRepository
- AddSequenceMeta.Exception.UnableToReadStepInfo
- AddSequenceMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/99cf76f46226909a.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/datagrid/DataGridMeta.java:472
fieldPrecision[i] = (int) rep.getStepAttributeInteger( idStep, i, "field_precision" );
setEmptyString[i] = rep.getStepAttributeBoolean( idStep, i, "set_empty_string", false );
fieldNullIf[i] = rep.getStepAttributeString( idStep, i, FIELD_NULL_IF );
}
int nrLines = (int) rep.getStepAttributeInteger( idStep, "nr_lines" );
dataLines = new ArrayList<>();
for ( int i = 0; i < nrLines; i++ ) {
List<String> line = new ArrayList<>();
for ( int f = 0; f < nrfields; f++ ) {
String item = rep.getStepAttributeString( idStep, i, "item_" + f );
line.add( item );
}
dataLines.add( line );
}
} catch ( Exception e ) {
throw new KettleException( "Unexpected error reading step information from the repository", e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep ) throws KettleException {
try {
for ( int i = 0; i < fieldName.length; i++ ) {
if ( fieldName[i] != null && fieldName[i].length() != 0 ) {
rep.saveStepAttribute( idTransformation, idStep, i, FIELD_NAME, fieldName[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "field_type", fieldType[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "field_format", fieldFormat[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "field_currency", currency[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "field_decimal", decimal[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "field_group", group[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "field_length", fieldLength[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "field_precision", fieldPrecision[i] );
rep.saveStepAttribute( idTransformation, idStep, i, "set_empty_string", setEmptyString[i] );
rep.saveStepAttribute( idTransformation, idStep, i, FIELD_NULL_IF, fieldNullIf[i] );View on GitHub (pinned to f3058517a1)