pentaho/pentaho-kettle · error · KettleException
FuzzyMatchMeta.Exception.UnableToSaveStepInfoToRepository
Error message
FuzzyMatchMeta.Exception.UnableToSaveStepInfoToRepository
What it means
saveRep() persists the FuzzyMatch step configuration to a repository; when saving step attributes (lookup/return value names) throws, it wraps the exception in a KettleException 'FuzzyMatchMeta.Exception.UnableToSaveStepInfoToRepository' plus the step id. The original exception is attached as cause.
Solutions
- Check repository write permissions / use an account with insert rights on R_STEP_ATTRIBUTE
- Reconnect and retry saving; fix transient JDBC/network errors
- Save the transformation to file (.ktr) as a workaround, then retry repository save later
- Check repository DB constraints/size (disk space, table locks) and clear conflicts
Example fix
// before
repository.save(transMeta, "my transformation", null);
// after (fallback to file when repo save fails)
try {
repository.save(transMeta, "my transformation", null);
} catch (KettleException e) {
new TransMeta(transMeta).writeFile("local_backup.ktr", "overwrite");
} Defensive patterns
Strategy: try-catch
Validate before calling
if (rep == null || !rep.isConnected()) throw new IllegalStateException("Repository must be connected before saving"); Try / catch
try { repository.save(transMeta, null, null); } catch (KettleException e) { /* fallback to file */ } Prevention
- Use repository credentials with write permissions
- Avoid concurrent edits to the same transformation
- Ensure repository DB has free space
When it happens
Trigger: saveRep(rep, metaStore, id_transformation, id_step) fails while calling rep.saveStepAttribute(...) for 'return_value_name'/'return_value_rename' rows — repository write error, lock/permission issue, constraint violation, or connection loss during the loop.
Common situations: Read-only database repository credentials; repository DB transaction rollback or deadlock; disk full on the repository server; concurrent edits to the same transformation causing conflicts.
Related errors
- AbortMeta.Exception.UnableToSaveStepInfoToRepository
- ERROR_0003_Cannot_Save_Job_Entry
- FuzzyMatchMeta.Exception.UnexpecteErrorReadingStepInfoFromRe…
- JobEntryAddResultFilenames.UnableToSaveToRepo
- Unable to save step information to the repository for…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/9b39583e4f5144c1.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/fuzzymatch/FuzzyMatchMeta.java:591
rep.saveStepAttribute( id_transformation, id_step, "lookup_from_step", infoStream.getStepname() );
rep.saveStepAttribute( id_transformation, id_step, "lookupfield", lookupfield );
rep.saveStepAttribute( id_transformation, id_step, "mainstreamfield", mainstreamfield );
rep.saveStepAttribute( id_transformation, id_step, "outputmatchfield", outputmatchfield );
rep.saveStepAttribute( id_transformation, id_step, "outputvaluefield", outputvaluefield );
rep.saveStepAttribute( id_transformation, id_step, "caseSensitive", caseSensitive );
rep.saveStepAttribute( id_transformation, id_step, "closervalue", closervalue );
rep.saveStepAttribute( id_transformation, id_step, "minimalValue", minimalValue );
rep.saveStepAttribute( id_transformation, id_step, "maximalValue", maximalValue );
rep.saveStepAttribute( id_transformation, id_step, "separator", separator );
rep.saveStepAttribute( id_transformation, id_step, "algorithm", getAlgorithmTypeCode( algorithm ) );
for ( int i = 0; i < value.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "return_value_name", value[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "return_value_rename", valueName[i] );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "FuzzyMatchMeta.Exception.UnableToSaveStepInfoToRepository" )
+ id_step, e );
}
}
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,
RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
Repository repository, IMetaStore metaStore ) {
CheckResult cr;
if ( prev != null && prev.size() > 0 ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(
PKG, "FuzzyMatchMeta.CheckResult.StepReceivingFields", prev.size() + "" ), stepMeta );
remarks.add( cr );
// Starting from selected fields in ...
// Check the fields from the previous stream!View on GitHub (pinned to f3058517a1)