pentaho/pentaho-kettle · error · KettleException
Unable to save step information to the repository for…
Error message
Unable to save step information to the repository for idStep=
What it means
KettleException thrown by PaloCellOutputMeta.saveRep when saving the step's attributes to the Pentaho Repository fails. All saveStepAttribute calls (connection, dimensions, measure field) are inside one try block; any repository write error is wrapped with the step id appended to the message.
Solutions
- Check the wrapped cause: fix repository DB connectivity, permissions, or disk space and re-save the transformation.
- Confirm the repository user has INSERT/UPDATE rights on R_STEP_ATTRIBUTE.
- Retry the save; if deadlocks occur, avoid concurrent edits of the same transformation.
- Fall back to saving the transformation as a local .ktr file, then import it into the repository later.
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-check write access
if (!rep.getConnection().isReadOnly()) { /* proceed with save */ } Try / catch
try {
transMeta.saveRep(rep, metaStore, idTransformation);
} catch (KettleException e) {
log.error("Save failed: " + e.getCause(), e);
// fall back to local file save
transMeta.saveXml(localPath, null);
} Prevention
- Ensure repository user has INSERT/UPDATE rights on R_STEP_ATTRIBUTE
- Monitor repository DB disk space and read-only flags
- Avoid concurrent edits of the same transformation
- Save locally before repository sync
When it happens
Trigger: Saving a transformation to the repository while the database connection is down, the transaction fails, or a saveStepAttribute write for 'connection', 'dimensionname', 'fieldname', 'fieldtype', or measure attributes throws.
Common situations: Repository database read-only or out of space; network drop between Spoon and repository DB mid-save; repository permissions insufficient for INSERT/UPDATE on R_STEP_ATTRIBUTE; deadlock on concurrent saves.
Related errors
- Unable to save step information to the repository for…
- SyslogMessageMeta.Exception.UnableToSaveStepInfo
- unable to save jobentry of type 'file exists' to the…
- Unable to save step information to the repository, id_step=
- Unexpected error reading step information from the…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/0b5d80548cd4f7f2.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/celloutput/PaloCellOutputMeta.java:281
rep.saveStepAttribute( idTransformation, idStep, "updateMode", this.updateMode );
rep.saveStepAttribute( idTransformation, idStep, "splashMode", this.splashMode );
rep.saveStepAttribute( idTransformation, idStep, "clearcube", this.clearCube );
rep.saveStepAttribute( idTransformation, idStep, "preloadDimensionCache", this.preloadDimensionCache );
rep.saveStepAttribute( idTransformation, idStep, "enableDimensionCache", this.enableDimensionCache );
rep.saveStepAttribute( idTransformation, idStep, "commitSize", this.commitSize );
rep.saveStepAttribute( idTransformation, idStep, "measurename", this.measureField.getDimensionName() );
rep.saveStepAttribute( idTransformation, idStep, "measurefieldname", this.measureField.getFieldName() );
rep.saveStepAttribute( idTransformation, idStep, "measurefieldtype", this.measureField.getFieldType() );
for ( int i = 0; i < this.fields.size(); i++ ) {
rep.saveStepAttribute( idTransformation, idStep, i, "dimensionname", this.fields.get( i ).getDimensionName() );
rep.saveStepAttribute( idTransformation, idStep, i, "fieldname", this.fields.get( i ).getFieldName() );
rep.saveStepAttribute( idTransformation, idStep, i, "fieldtype", this.fields.get( i ).getFieldType() );
}
} catch ( Exception e ) {
throw new KettleException( "Unable to save step information to the repository for idStep=" + idStep, e );
}
}
public final void check( final List<CheckResultInterface> remarks, final TransMeta transMeta,
final StepMeta stepMeta, final RowMetaInterface prev,
final String[] input, final String[] output, final RowMetaInterface info,
VariableSpace space, Repository repository, IMetaStore metaStore ) {
CheckResult cr;
if ( databaseMeta != null ) {
cr = new CheckResult( CheckResultInterface.TYPE_RESULT_OK, "Connection exists", stepMeta );
remarks.add( cr );
final PaloHelper helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );
try {
helper.connect();
cr = new CheckResult( CheckResultInterface.TYPE_RESULT_OK, "Connection to database OK", stepMeta );View on GitHub (pinned to f3058517a1)