pentaho/pentaho-kettle · error · KettleException
NormaliserMeta.Exception.UnableToSaveStepInfoToRepository
NormaliserMeta.Exception.UnableToSaveStepInfoToRepository
Error message
NormaliserMeta.Exception.UnableToSaveStepInfoToRepository
What it means
NormaliserMeta.saveRep() persists the Normaliser step's field rows to the repository via rep.saveStepAttribute(...). Any exception during those writes is wrapped in a KettleException with this message plus the id_step, chaining the original cause.
Solutions
- Inspect the chained cause (getCause()) for the concrete repository/database error.
- Verify repository connectivity and that the user has write privileges.
- Retry the save of the transformation after the repository is healthy.
- Check repository schema version matches your Pentaho version; run upgrade scripts if needed.
Example fix
null
Defensive patterns
Strategy: retry
Validate before calling
// Verify write access before saving // e.g. attempt a benign metadata write or check repository permissions
Try / catch
try { meta.saveRep(rep, metaStore, transId, stepId); } catch (KettleException e) { log.error("Repository save failed for step " + stepId + ": " + e.getCause(), e); /* retry with backoff or surface to user */ } Prevention
- Save transformations over a stable network connection to the repository DB.
- Use a repository account with write privileges.
- Monitor repository database disk space and health.
- Upgrade repository schema when upgrading Pentaho.
When it happens
Trigger: Calling saveRep(rep, metaStore, id_transformation, id_step) when a saveStepAttribute call fails — repository DB write error, connection drop, read-only repository, or constraint violation.
Common situations: Repository database disk full or offline; user lacks write permission on the repository; saving during a network outage; repository schema mismatch after an upgrade.
Related errors
- AppendMeta.Exception.UnableToSaveStepInfo
- CombinationLookupMeta.Exception.UnableToSaveStepInfo
- NullIfMeta.Exception.UnableToSaveStepInfoToRepository
- Unable to save step information to the repository, id_step=
- AccessInputMeta.Exception.ErrorReadingRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/8d1cc88037e7b514.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/normaliser/NormaliserMeta.java:300
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG,
"NormaliserMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository" ), e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "typefield", typeField );
for ( int i = 0; i < normaliserFields.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", normaliserFields[i].getName() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_value", normaliserFields[i].getValue() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_norm", normaliserFields[i].getNorm() );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG,
"NormaliserMeta.Exception.UnableToSaveStepInfoToRepository" ) + id_step, e );
}
}
@Override
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, RowMetaInterface prev,
String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository,
IMetaStore metaStore ) {
String error_message = "";
CheckResult cr;
// Look up fields in the input stream <prev>
if ( prev != null && prev.size() > 0 ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString( PKG,
"NormaliserMeta.CheckResult.StepReceivingFieldsOK", prev.size() + "" ), stepMeta );
remarks.add( cr );View on GitHub (pinned to f3058517a1)