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

  1. Check repository connectivity and retry the save.
  2. Verify the repository user has INSERT/UPDATE privileges on the step attribute tables.
  3. Check database disk space and read-only status.
  4. 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


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)