{"record":{"id":"1c00ff94b6f3daee","repo":"pentaho/pentaho-kettle","slug":"xsdvalidatormeta-exception-unabletosavestepinfo","errorCode":null,"errorMessage":"XsdValidatorMeta.Exception.UnableToSaveStepInfo","messagePattern":"XsdValidatorMeta\\.Exception\\.UnableToSaveStepInfo","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xsdvalidator/XsdValidatorMeta.java","lineNumber":330,"sourceCode":"\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, \"xdsfilename\", xsdFilename );\n      rep.saveStepAttribute( id_transformation, id_step, \"xmlstream\", xmlStream );\n      rep.saveStepAttribute( id_transformation, id_step, \"resultfieldname\", resultFieldname );\n      rep.saveStepAttribute( id_transformation, id_step, \"xmlsourcefile\", xmlSourceFile );\n      rep.saveStepAttribute( id_transformation, id_step, \"addvalidationmsg\", addValidationMessage );\n      rep.saveStepAttribute( id_transformation, id_step, \"validationmsgfield\", validationMessageField );\n      rep.saveStepAttribute( id_transformation, id_step, \"ifxmlvalid\", ifXmlValid );\n      rep.saveStepAttribute( id_transformation, id_step, \"ifxmlunvalid\", ifXmlInvalid );\n      rep.saveStepAttribute( id_transformation, id_step, \"outputstringfield\", outputStringField );\n      rep.saveStepAttribute( id_transformation, id_step, \"xsddefinedfield\", xsdDefinedField );\n      rep.saveStepAttribute( id_transformation, id_step, \"xsdsource\", xsdSource );\n      rep.saveJobEntryAttribute( id_transformation, id_step, \"allowExternalEntities\", allowExternalEntities );\n\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"XsdValidatorMeta.Exception.UnableToSaveStepInfo\" )\n          + id_step, e );\n    }\n  }\n\n  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepinfo, RowMetaInterface prev,\n      String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository,\n      IMetaStore metaStore ) {\n    CheckResult cr;\n\n    // Check XML stream field\n    if ( Utils.isEmpty( xmlStream ) ) {\n      cr =\n          new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString( PKG,\n              \"XsdValidatorMeta.CheckResult.XMLStreamFieldEmpty\" ), stepinfo );\n      remarks.add( cr );\n    } else {\n      cr =\n          new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString( PKG,","sourceCodeStart":312,"sourceCodeEnd":348,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xsdvalidator/XsdValidatorMeta.java#L312-L348","documentation":"Thrown by XsdValidatorMeta.saveRep when persisting the step's settings to the repository fails. Exceptions from rep.saveStepAttribute/saveJobEntryAttribute are wrapped in a KettleException with this message plus the id_step, with the original error as cause. It means the step configuration was not saved.","triggerScenarios":"saveRep is called during transformation save and a rep.saveStepAttribute/saveJobEntryAttribute call throws (DB connection lost, constraint violation, read-only repository, invalid id_step).","commonSituations":"Repository DB session dropped during save; read-only or full database; concurrent modification of the transformation; saving to a transformation whose id is stale.","solutions":["Check the cause exception for the underlying JDBC error.","Verify repository database connectivity and write permissions.","Retry the save after reconnecting; verify the transformation id is current.","Save the transformation as a file (.ktr) as a workaround."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { repository.save(transMeta, versionComment, monitor, null) } catch (KettleException e) { log.error(\"Save failed for step \" + e.getMessage(), e); }","preventionTips":["Verify repository write access and disk space before bulk saves","Avoid concurrent edits of the same transformation","Keep repository connections alive-checked; save promptly after edits"],"tags":["repository","database","kettle","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"}