{"record":{"id":"1b00fc80cc8dee00","repo":"pentaho/pentaho-kettle","slug":"xsltmeta-exception-unabletosavestepinfo","errorCode":null,"errorMessage":"XsltMeta.Exception.UnableToSaveStepInfo","messagePattern":"XsltMeta\\.Exception\\.UnableToSaveStepInfo","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xslt/XsltMeta.java","lineNumber":403,"sourceCode":"      rep.saveStepAttribute( id_transformation, id_step, \"resultfieldname\", resultFieldname );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"xslfilefield\", xslFileField );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"xslfilefielduse\", xslFileFieldUse );\n      rep.saveStepAttribute( id_transformation, id_step, \"xslfieldisafile\", xslFieldIsAFile );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"xslfactory\", xslFactory );\n\n      for ( int i = 0; i < parameterName.length; i++ ) {\n        rep.saveStepAttribute( id_transformation, id_step, i, \"param_field\", parameterField[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"param_name\", parameterName[i] );\n      }\n      for ( int i = 0; i < outputPropertyName.length; i++ ) {\n        rep.saveStepAttribute( id_transformation, id_step, i, \"output_property_name\", outputPropertyName[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"output_property_value\", outputPropertyValue[i] );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"XsltMeta.Exception.UnableToSaveStepInfo\" ) + id_step, e );\n    }\n  }\n\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    CheckResult cr;\n\n    if ( prev != null && prev.size() > 0 ) {\n      cr =\n          new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString( PKG,\n              \"XsltMeta.CheckResult.ConnectedStepOK\", String.valueOf( prev.size() ) ), stepMeta );\n      remarks.add( cr );\n    } else {\n      cr =\n          new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString( PKG,\n              \"XsltMeta.CheckResult.NoInputReceived\" ), stepMeta );\n      remarks.add( cr );","sourceCodeStart":385,"sourceCodeEnd":421,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xslt/XsltMeta.java#L385-L421","documentation":"Thrown by XsltMeta.saveRep when an exception occurs while persisting the step's configuration to the repository database. Any saveStepAttribute failure (including the per-index output property rows) is wrapped in a KettleException with the step id appended. The transformation metadata was not fully saved.","triggerScenarios":"Repository write failures during saveRep: DB connection lost, read-only repository, constraint violations, transaction rollback, or oversized attribute values.","commonSituations":"Saving a transformation while the repository connection dropped; read-only DB user; repository locked by another process; network blips with a remote repository.","solutions":["Check the cause exception and DB connectivity; re-save the transformation after reconnecting","Verify the repository user has write permissions on the attribute tables","Check DB constraints/table space and repository logs for the failing statement","Retry the save; if persistent, export the transformation to XML as a workaround"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n    transMeta.saveRep(repo, metaStore, transName, transObjectId);\n} catch (KettleException e) {\n    log.error(\"Failed to save step info: \" + e.getMessage(), e.getCause());\n    // export to XML as fallback and retry save after connectivity check\n}","preventionTips":["Confirm repository connectivity and write permissions before editing sessions","Avoid simultaneous edits of the same transformation by multiple users","Export transformations to XML periodically as backup"],"tags":["kettle","repository","step-metadata","persistence","write-failed"],"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"}