{"record":{"id":"4d48c85ddcc48581","repo":"pentaho/pentaho-kettle","slug":"restmeta-exception-unabletosavestepinfo","errorCode":"RestMeta.Exception.UnableToSaveStepInfo","errorMessage":"RestMeta.Exception.UnableToSaveStepInfo","messagePattern":"RestMeta\\.Exception\\.UnableToSaveStepInfo","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/rest/core/src/main/java/org/pentaho/di/trans/steps/rest/RestMeta.java","lineNumber":719,"sourceCode":"      rep.saveStepAttribute( idTransformation, idStep, TAG_PREEMPTIVE, preemptive );\n      for ( int i = 0; i < headerName.length; i++ ) {\n        rep.saveStepAttribute( idTransformation, idStep, i, TAG_HEADER_FIELD, headerField[i] );\n        rep.saveStepAttribute( idTransformation, idStep, i, TAG_HEADER_NAME, headerName[i] );\n      }\n      for ( int i = 0; i < parameterField.length; i++ ) {\n        rep.saveStepAttribute( idTransformation, idStep, i, TAG_PARAMETER_FIELD, parameterField[i] );\n        rep.saveStepAttribute( idTransformation, idStep, i, TAG_PARAMETER_NAME, parameterName[i] );\n      }\n      for ( int i = 0; i < matrixParameterField.length; i++ ) {\n        rep.saveStepAttribute( idTransformation, idStep, i, TAG_MATRIX_PARAMETER_FIELD, matrixParameterField[i] );\n        rep.saveStepAttribute( idTransformation, idStep, i, TAG_MATRIX_PARAMETER_NAME, matrixParameterName[i] );\n      }\n      rep.saveStepAttribute( idTransformation, idStep, TAG_RESULT_NAME, fieldName );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_RESULT_CODE, resultCodeFieldName );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_RESPONSE_TIME, responseTimeFieldName );\n      rep.saveStepAttribute( idTransformation, idStep, TAG_RESPONSE_HEADER, responseHeaderFieldName );\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"RestMeta.Exception.UnableToSaveStepInfo\" )\n        + idStep, 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    // See if we have input streams leading to this step!\n    if ( input.length > 0 ) {\n      cr =\n        new CheckResult( CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString(\n          PKG, \"RestMeta.CheckResult.ReceivingInfoFromOtherSteps\" ), stepMeta );\n    } else {\n      cr =\n        new CheckResult( CheckResultInterface.TYPE_RESULT_ERROR, BaseMessages.getString(","sourceCodeStart":701,"sourceCodeEnd":737,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/rest/core/src/main/java/org/pentaho/di/trans/steps/rest/RestMeta.java#L701-L737","documentation":"RestMeta.saveRep wraps exceptions during saving the step's attributes into a KettleException with this message (note: it concatenates idStep directly). It means the REST step configuration could not be persisted to the Pentaho repository.","triggerScenarios":"Repository write failure while calling saveStepAttribute — connection loss, read-only repository, constraint violation, or oversized attribute values.","commonSituations":"Repository database read-only or out of space; user lacks write permission; network drop mid-save; repository lock held by another session.","solutions":["Check repository connectivity, permissions, and disk space, then retry saving","Review the wrapped cause exception for the underlying DB error","Commit/restart the repository session if a lock is stuck","If saving locally, export the transformation as XML instead"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  saveRep(rep, metaStore, idTransformation, idStep);\n} catch (KettleException e) {\n  logError(\"Repository save failed for step \" + idStep + \": \" + e.getCause());\n  // fall back to XML export\n}","preventionTips":["Ensure write permissions and sufficient DB space on the repository","Avoid concurrent edits of the same transformation","Export a local XML copy before risky repository saves"],"tags":["kettle","repository","save","rest-meta"],"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"}