pentaho/pentaho-kettle · error · KettleException
XsltMeta.Exception.UnableToSaveStepInfo
Error message
XsltMeta.Exception.UnableToSaveStepInfo
What it means
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.
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
Defensive patterns
Strategy: try-catch
Try / catch
try {
transMeta.saveRep(repo, metaStore, transName, transObjectId);
} catch (KettleException e) {
log.error("Failed to save step info: " + e.getMessage(), e.getCause());
// export to XML as fallback and retry save after connectivity check
} Prevention
- 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
When it happens
Trigger: Repository write failures during saveRep: DB connection lost, read-only repository, constraint violations, transaction rollback, or oversized attribute values.
Common situations: Saving a transformation while the repository connection dropped; read-only DB user; repository locked by another process; network blips with a remote repository.
Related errors
- CubeInputMeta.Exception.UnableToSaveStepInfo
- CubeOutputMeta.Exception.UnableToSaveStepInfo
- CubeOutputMeta.Exception.UnexpectedErrorInReadingStepInfo
- DelayMeta.Exception.UnexpectedErrorReadingStepInfo
- DelayMeta.Exception.UnexpectedErrorSavingStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/1b00fc80cc8dee00.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/xml/core/src/main/java/org/pentaho/di/trans/steps/xslt/XsltMeta.java:403
rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultFieldname );
rep.saveStepAttribute( id_transformation, id_step, "xslfilefield", xslFileField );
rep.saveStepAttribute( id_transformation, id_step, "xslfilefielduse", xslFileFieldUse );
rep.saveStepAttribute( id_transformation, id_step, "xslfieldisafile", xslFieldIsAFile );
rep.saveStepAttribute( id_transformation, id_step, "xslfactory", xslFactory );
for ( int i = 0; i < parameterName.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "param_field", parameterField[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "param_name", parameterName[i] );
}
for ( int i = 0; i < outputPropertyName.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "output_property_name", outputPropertyName[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "output_property_value", outputPropertyValue[i] );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "XsltMeta.Exception.UnableToSaveStepInfo" ) + id_step, e );
}
}
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, RowMetaInterface prev,
String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository,
IMetaStore metaStore ) {
CheckResult cr;
if ( prev != null && prev.size() > 0 ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString( PKG,
"XsltMeta.CheckResult.ConnectedStepOK", String.valueOf( prev.size() ) ), stepMeta );
remarks.add( cr );
} else {
cr =
new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString( PKG,
"XsltMeta.CheckResult.NoInputReceived" ), stepMeta );
remarks.add( cr );View on GitHub (pinned to f3058517a1)