{"record":{"id":"8d1cc88037e7b514","repo":"pentaho/pentaho-kettle","slug":"normalisermeta-exception-unabletosavestepinfotorepository","errorCode":"NormaliserMeta.Exception.UnableToSaveStepInfoToRepository","errorMessage":"NormaliserMeta.Exception.UnableToSaveStepInfoToRepository","messagePattern":"NormaliserMeta\\.Exception\\.UnableToSaveStepInfoToRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/normaliser/NormaliserMeta.java","lineNumber":300,"sourceCode":"    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG,\n          \"NormaliserMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository\" ), e );\n    }\n  }\n\n  @Override\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )\n    throws KettleException {\n    try {\n      rep.saveStepAttribute( id_transformation, id_step, \"typefield\", typeField );\n\n      for ( int i = 0; i < normaliserFields.length; i++ ) {\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_name\", normaliserFields[i].getName() );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_value\", normaliserFields[i].getValue() );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_norm\", normaliserFields[i].getNorm() );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG,\n          \"NormaliserMeta.Exception.UnableToSaveStepInfoToRepository\" ) + id_step, e );\n    }\n  }\n\n  @Override\n  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, RowMetaInterface prev,\n      String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository,\n      IMetaStore metaStore ) {\n\n    String error_message = \"\";\n    CheckResult cr;\n\n    // Look up fields in the input stream <prev>\n    if ( prev != null && prev.size() > 0 ) {\n      cr =\n          new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString( PKG,\n              \"NormaliserMeta.CheckResult.StepReceivingFieldsOK\", prev.size() + \"\" ), stepMeta );\n      remarks.add( cr );","sourceCodeStart":282,"sourceCodeEnd":318,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/normaliser/NormaliserMeta.java#L282-L318","documentation":"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.","triggerScenarios":"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.","commonSituations":"Repository database disk full or offline; user lacks write permission on the repository; saving during a network outage; repository schema mismatch after an upgrade.","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."],"exampleFix":"null","handlingStrategy":"retry","validationCode":"// Verify write access before saving\n// e.g. attempt a benign metadata write or check repository permissions","typeGuard":null,"tryCatchPattern":"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 */ }","preventionTips":["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."],"tags":["kettle","repository","database","metadata-save"],"backgroundTag":"database-write-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}