{"record":{"id":"9051521457c7aa36","repo":"pentaho/pentaho-kettle","slug":"execprocessmeta-exception-unabletosavestepinfo","errorCode":null,"errorMessage":"ExecProcessMeta.Exception.UnableToSaveStepInfo","messagePattern":"ExecProcessMeta\\.Exception\\.UnableToSaveStepInfo","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/execprocess/ExecProcessMeta.java","lineNumber":313,"sourceCode":"        PKG, \"ExecProcessMeta.Exception.UnexpectedErrorReadingStepInfo\" ), e );\n    }\n  }\n\n  @Override\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {\n    try {\n      rep.saveStepAttribute( id_transformation, id_step, \"processfield\", processfield );\n      rep.saveStepAttribute( id_transformation, id_step, \"resultfieldname\", resultfieldname );\n      rep.saveStepAttribute( id_transformation, id_step, \"errorfieldname\", errorfieldname );\n      rep.saveStepAttribute( id_transformation, id_step, \"exitvaluefieldname\", exitvaluefieldname );\n      rep.saveStepAttribute( id_transformation, id_step, \"failwhennotsuccess\", failwhennotsuccess );\n      rep.saveStepAttribute( id_transformation, id_step, \"outputlinedelimiter\", outputLineDelimiter );\n      rep.saveStepAttribute( id_transformation, id_step, \"argumentsInFields\", argumentsInFields );\n      for ( int i = 0; i < argumentFieldNames.length; i++ ) {\n        rep.saveStepAttribute( id_transformation, id_step, i, \"argumentFieldName\", argumentFieldNames[i] );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"ExecProcessMeta.Exception.UnableToSaveStepInfo\" )\n        + 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    String error_message = \"\";\n\n    if ( Utils.isEmpty( resultfieldname ) ) {\n      error_message = BaseMessages.getString( PKG, \"ExecProcessMeta.CheckResult.ResultFieldMissing\" );\n      cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepMeta );\n    } else {\n      error_message = BaseMessages.getString( PKG, \"ExecProcessMeta.CheckResult.ResultFieldOK\" );\n      cr = new CheckResult( CheckResult.TYPE_RESULT_OK, error_message, stepMeta );\n    }","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/execprocess/ExecProcessMeta.java#L295-L331","documentation":"KettleException thrown by ExecProcessMeta.saveRep() when saving the step's attributes to the repository fails, with id_step appended to the message. It wraps the underlying exception thrown by rep.saveStepAttribute() calls (including the per-argument argumentFieldName loop).","triggerScenarios":"saveRep() fails on any rep.saveStepAttribute(id_transformation, id_step, ...) call — repository write error, constraint violation, lost DB connection, or read-only repository.","commonSituations":"Repository database read-only or out of space; concurrent edit of the same transformation causing lock/conflict; step has never been persisted so id_step is invalid; JDBC timeout during save.","solutions":["Check getCause() of the KettleException for the JDBC-level failure (permissions, constraint, timeout).","Confirm the repository user has write privileges to the transformation's folder.","Re-open and re-save the transformation in Spoon to get a fresh valid id_step.","If repeated, check the repository DB for lock contention or disk space."],"exampleFix":"// before\nmeta.saveRep(rep, metaStore, transMeta.getObjectId(), stepMeta.getObjectId());\n// after\ntry {\n  meta.saveRep(rep, metaStore, transMeta.getObjectId(), stepMeta.getObjectId());\n} catch (KettleException e) {\n  log.error(\"save failed for step \" + stepMeta.getName() + \": \" + e.getCause(), e);\n}","handlingStrategy":"try-catch","validationCode":"if (id_step == null) throw new IllegalStateException(\"step must be persisted before saveRep\");","typeGuard":null,"tryCatchPattern":"try { meta.saveRep(rep, metaStore, id_trans, id_step); } catch (KettleException e) { handleSaveFailure(id_step, e.getCause()); }","preventionTips":["Ensure repository user has write permissions","Save referenced connections before the step","Avoid concurrent edits of the same transformation"],"tags":["repository","metadata-save","kettle"],"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"}