pentaho/pentaho-kettle · error · KettleException
RegexEvalMeta.Exception.UnableToSaveStepInfo
Error message
RegexEvalMeta.Exception.UnableToSaveStepInfo
What it means
RegexEvalMeta.saveRep persists step attributes (dotall, multiline, unicode, unix, matcher, fields) to the repository; any failure is wrapped in a KettleException 'RegexEvalMeta.Exception.UnableToSaveStepInfo' plus the id_step. Saving the transformation's step configuration failed.
Solutions
- Check repository connectivity and retry the save.
- Verify the repository user has INSERT/UPDATE privileges on the step attribute tables.
- Check database disk space and read-only status.
- Look at the chained cause for the concrete SQL error.
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Calling saveRep via saving a transformation to a repository when the repository write fails: connection loss, permission problems, schema errors.
Common situations: Repository database read-only or out of space; credentials lacking INSERT/UPDATE rights on step attribute tables; network drop mid-save.
Related errors
- PGPDecryptStreamMeta.Exception.UnableToSaveStepInfo
- ReplaceStringMeta.Exception.UnableToSaveStepInfo
- Unable to save step information to the repository for…
- Unable to save step information to the repository for…
- AbortMeta.Exception.UnableToSaveStepInfoToRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/39c8ec184bd89deb.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/regexeval/RegexEvalMeta.java:602
rep.saveStepAttribute( id_transformation, id_step, i, "field_trimtype", ValueMetaString
.getTrimTypeCode( fieldTrimType[i] ) );
}
}
rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
rep.saveStepAttribute( id_transformation, id_step, "usevar", usevar );
rep.saveStepAttribute( id_transformation, id_step, "allowcapturegroups", allowcapturegroups );
rep.saveStepAttribute( id_transformation, id_step, "replacefields", replacefields );
rep.saveStepAttribute( id_transformation, id_step, "canoneq", canoneq );
rep.saveStepAttribute( id_transformation, id_step, "caseinsensitive", caseinsensitive );
rep.saveStepAttribute( id_transformation, id_step, "comment", comment );
rep.saveStepAttribute( id_transformation, id_step, "dotall", dotall );
rep.saveStepAttribute( id_transformation, id_step, "multiline", multiline );
rep.saveStepAttribute( id_transformation, id_step, "unicode", unicode );
rep.saveStepAttribute( id_transformation, id_step, "unix", unix );
rep.saveStepAttribute( id_transformation, id_step, "matcher", matcher );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "RegexEvalMeta.Exception.UnableToSaveStepInfo" )
+ 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, "RegexEvalMeta.CheckResult.ConnectedStepOK", String.valueOf( prev.size() ) ), stepMeta );
remarks.add( cr );
} else {
cr =
new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString(View on GitHub (pinned to f3058517a1)