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
KettleException thrown by PaloCellOutputMeta.readRep when reading the step's saved attributes from the Pentaho Repository fails. Any exception raised by Repository.getStepAttributeString/getStepAttributeInteger calls (connection problems, repository schema issues) is wrapped in this generic message.
Solutions
- Check repository connectivity and re-open the transformation; retry after fixing the underlying repository exception (see cause in log).
- Inspect the R_STEP_ATTRIBUTE table for rows belonging to this step id; delete orphaned/corrupt rows and re-save the step.
- Recreate the Palo Cell Output step in Spoon against the repository and re-save.
- Verify repository and Pentaho versions match; run repository upgrade scripts if the schema is out of date.
Defensive patterns
Strategy: try-catch
Validate before calling
// Verify repository reachability and attributes before loading
if (!rep.connect().equals("OK")) { /* abort */ }
String val = rep.getStepAttributeString(idStep, "measurefieldname");
if (val == null) log.warn("step " + idStep + " missing measurefieldname attribute"); Try / catch
try {
meta.readRep(rep, metaStore, idStep, databases);
} catch (KettleException e) {
log.error("Repository read failed for step: " + e.getCause(), e);
// re-save step from Spoon to rebuild attributes
} Prevention
- Check repository DB health before opening transformations
- Keep repository schema upgraded to match your Pentaho version
- Avoid manual edits to R_STEP_ATTRIBUTE
- Backup the repository before migrations
When it happens
Trigger: Loading a transformation from the repository where the KETTLE_STEP_ATTRIBUTE rows for this step are missing/corrupt, or the repository connection fails mid-read while fetching 'dimensionname', 'measurefieldname', 'measurefieldtype' attributes.
Common situations: Repository database partially migrated/upgraded so step attribute rows are stale; repository connection drops while opening a transformation; manually deleting repository rows; restoring a repository backup with schema mismatch.
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
- unable to save jobentry of type 'file exists' to the…
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/62309f6560eab936.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/celloutput/PaloCellOutputMeta.java:253
}
int nrFields = rep.countNrStepAttributes( idStep, "dimensionname" );
for ( int i = 0; i < nrFields; i++ ) {
String dimensionName = rep.getStepAttributeString( idStep, i, "dimensionname" );
String fieldName = rep.getStepAttributeString( idStep, i, "fieldname" );
String fieldType = rep.getStepAttributeString( idStep, i, "fieldtype" );
this.fields.add( new DimensionField( dimensionName, fieldName, fieldType ) );
}
String measureName = rep.getStepAttributeString( idStep, "measurename" );
String measureFieldName = rep.getStepAttributeString( idStep, "measurefieldname" );
String measureFieldType = rep.getStepAttributeString( idStep, "measurefieldtype" );
this.measureField = new DimensionField( measureName, measureFieldName, measureFieldType );
setDefault();
} catch ( Exception e ) {
throw new KettleException( "Unexpected error reading step information from the repository", e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idTransformation, ObjectId idStep )
throws KettleException {
try {
rep.saveDatabaseMetaStepAttribute( idTransformation, idStep, "connection", databaseMeta );
rep.saveStepAttribute( idTransformation, idStep, "cube", this.cube );
rep.saveStepAttribute( idTransformation, idStep, "measuretype", this.measureType );
rep.saveStepAttribute( idTransformation, idStep, "updateMode", this.updateMode );
rep.saveStepAttribute( idTransformation, idStep, "splashMode", this.splashMode );
rep.saveStepAttribute( idTransformation, idStep, "clearcube", this.clearCube );
rep.saveStepAttribute( idTransformation, idStep, "preloadDimensionCache", this.preloadDimensionCache );
rep.saveStepAttribute( idTransformation, idStep, "enableDimensionCache", this.enableDimensionCache );
rep.saveStepAttribute( idTransformation, idStep, "commitSize", this.commitSize );
rep.saveStepAttribute( idTransformation, idStep, "measurename", this.measureField.getDimensionName() );
rep.saveStepAttribute( idTransformation, idStep, "measurefieldname", this.measureField.getFieldName() );View on GitHub (pinned to f3058517a1)