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
PaloDimOutputMeta.saveRep persists level attributes via rep.saveStepAttribute(...). Any exception is wrapped as 'Unable to save step information to the repository for idStep=' + idStep, so changes to the step cannot be saved to the repository.
Solutions
- Check the wrapped cause for the underlying SQL/repository error
- Verify repository connectivity and that the user has write permissions
- Retry saving; if a specific attribute is too large, shorten level/field metadata
- Save the transformation locally as a KTR while the repository is unavailable
Example fix
// before rep.saveStepAttribute(id, idStep, i, "fieldname", veryLongName); // exceeds column length // after rep.saveStepAttribute(id, idStep, i, "fieldname", shortenedName); // within DB column limit
Defensive patterns
Strategy: try-catch
Validate before calling
// check write access before saving
if (!rep.getConnection().isReadOnly()) { saveStep(); } Try / catch
try { meta.saveRep(rep, metaStore, transId, stepId); } catch (KettleException e) {
logError("Repository save failed: " + e.getCause(), e);
saveLocally(); // fallback
} Prevention
- Confirm repository user has write permissions
- Avoid saving during repository maintenance/read-only windows
- Save a local KTR copy as fallback
- Keep level metadata within DB column limits
When it happens
Trigger: Repository write fails while saving step attributes: repository connection dropped, read-only repository/permissions, storage quota, or DB constraint violation on the step attribute table.
Common situations: Repository DB restarted mid-save; user lacks write permission on the repository; saving a very large number of levels exceeding a column limit; repository in read-only/maintenance mode.
Related errors
- PGPDecryptStreamMeta.Exception.UnableToSaveStepInfo
- RegexEvalMeta.Exception.UnableToSaveStepInfo
- ReplaceStringMeta.Exception.UnableToSaveStepInfo
- Unable to save step information to the repository for…
- AbortMeta.Exception.UnableToSaveStepInfoToRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/a024d7c9664a4d9c.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/dimoutput/PaloDimOutputMeta.java:236
rep.saveStepAttribute( idTransformation, idStep, "elementtype", this.elementType );
rep.saveStepAttribute( idTransformation, idStep, "createdimension", this.createNewDimension );
rep.saveStepAttribute( idTransformation, idStep, "cleardimension", this.clearDimension );
rep.saveStepAttribute( idTransformation, idStep, "clearconsolidations", this.clearConsolidations );
rep.saveStepAttribute( idTransformation, idStep, "recreatedimension", this.recreateDimension );
rep.saveStepAttribute( idTransformation, idStep, "enableElementCache", this.enableElementCache );
rep.saveStepAttribute( idTransformation, idStep, "preloadElementCache", this.preloadElementCache );
for ( int i = 0; i < levels.size(); i++ ) {
rep.saveStepAttribute( idTransformation, idStep, i, "levelname", this.levels.get( i ).getLevelName() );
rep.saveStepAttribute( idTransformation, idStep, i, "levelnumber", this.levels.get( i ).getLevelNumber() );
rep.saveStepAttribute( idTransformation, idStep, i, "fieldname", this.levels.get( i ).getFieldName() );
rep.saveStepAttribute( idTransformation, idStep, i, "fieldtype", this.levels.get( i ).getFieldType() );
rep.saveStepAttribute( idTransformation, idStep, i, "consolidationfieldname", this.levels.get( i )
.getConsolidationFieldName() );
}
} 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 );
remarks.add( cr );View on GitHub (pinned to f3058517a1)