{"record":{"id":"09a5cf282f07ffd5","repo":"pentaho/pentaho-kettle","slug":"unable-to-save-step-information-to-the-repository-for-id-09a5cf","errorCode":null,"errorMessage":"Unable to save step information to the repository for id_step= + id_step","messagePattern":"Unable to save step information to the repository for id_step= \\+ id_step","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/closure/ClosureGeneratorMeta.java","lineNumber":154,"sourceCode":"      parentIdFieldName = rep.getStepAttributeString( id_step, \"parent_id_field\" );\n      childIdFieldName = rep.getStepAttributeString( id_step, \"child_id_field\" );\n      distanceFieldName = rep.getStepAttributeString( id_step, \"distance_field\" );\n      rootIdZero = rep.getStepAttributeBoolean( id_step, \"is_root_zero\" );\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unexpected error reading step information from the repository\", 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, \"parent_id_field\", parentIdFieldName );\n      rep.saveStepAttribute( id_transformation, id_step, \"child_id_field\", childIdFieldName );\n      rep.saveStepAttribute( id_transformation, id_step, \"distance_field\", distanceFieldName );\n      rep.saveStepAttribute( id_transformation, id_step, \"is_root_zero\", rootIdZero );\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to save step information to the repository for id_step=\" + id_step, e );\n    }\n  }\n\n  @Override\n  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,\n                     RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,\n                     Repository repository, IMetaStore metaStore ) {\n    CheckResult cr;\n\n    ValueMetaInterface parentValueMeta = prev.searchValueMeta( parentIdFieldName );\n    if ( parentValueMeta != null ) {\n      cr =\n        new CheckResult(\n          CheckResultInterface.TYPE_RESULT_ERROR, \"The fieldname of the parent id could not be found.\",\n          stepMeta );\n      remarks.add( cr );\n    } else {\n      cr =","sourceCodeStart":136,"sourceCodeEnd":172,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/closure/ClosureGeneratorMeta.java#L136-L172","documentation":"ClosureGeneratorMeta.saveRep writes the step's settings (parent_id_field, child_id_field, distance_field, is_root_zero) to the Pentaho Repository. Any repository write failure is rethrown as a KettleException whose message includes the failing id_step. It means the step's metadata could not be persisted.","triggerScenarios":"Saving a transformation to the repository when rep.saveStepAttribute throws — DB write failure, constraint violation, insufficient privileges.","commonSituations":"Read-only repository DB, disk-full on the DB server, DB user lacking INSERT privileges on R_STEP_ATTRIBUTE.","solutions":["Check repository DB connectivity and write privileges","Free DB disk space or unlock read-only state","Retry the save; fall back to exporting as XML","Inspect repository DB error logs"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if (repository.isReadOnly()) throw new IllegalStateException(\"Repository is read-only\");","typeGuard":null,"tryCatchPattern":"try {\n  transMeta.save(rep, metaStore, comment);\n} catch (KettleException e) {\n  if (e.getMessage().contains(\"Unable to save step information\")) {\n    log.error(\"Save failed for id_step in message; export to XML as fallback\", e);\n  }\n}","preventionTips":["Confirm DB write privileges before saving","Monitor repository DB disk space","Export XML copies as backup"],"tags":["repository","persistence","write-failure"],"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"}