pentaho/pentaho-kettle · error · KettleException
GetSequenceMeta.Exception.UnableToSaveStepInfo
Error message
GetSequenceMeta.Exception.UnableToSaveStepInfo
What it means
GetSlaveSequenceMeta.saveRep throws KettleException with 'UnableToSaveStepInfo' (plus id_step) when saving the step's attributes (valuename, slave, seqname, increment) to a repository fails. The original exception is wrapped as the cause. It indicates the repository refused or failed the saveStepAttribute calls.
Solutions
- Check repository DB connectivity and retry the save.
- Grant the repository user INSERT/UPDATE on r_step_attribute.
- Verify the repository schema version matches your PDI release.
- Check DB disk space and server error logs for the underlying failure.
Defensive patterns
Strategy: try-catch
Validate before calling
// Check repository is writable before saving if ( rep.isReadOnly() ) throw new IllegalStateException( "Repository is read-only; cannot save transformation" );
Try / catch
try {
transMeta.saveRep( rep, metaStore, null, null );
} catch ( KettleException e ) {
if ( e.getMessage().contains( "UnableToSaveStepInfo" ) ) {
// inspect e.getCause() for DB error; check permissions/disk, then retry save
} else throw e;
} Prevention
- Use a repository account with INSERT/UPDATE on r_step_attribute
- Avoid read-only/standby repository databases for saves
- Monitor DB disk space on repository hosts
- Upgrade repository schema alongside PDI
When it happens
Trigger: Saving a transformation to a database repository; rep.saveStepAttribute throws due to connection failure, read-only DB user, or constraint/schema mismatch on r_step_attribute.
Common situations: Repository DB in read-only mode; user lacks INSERT/UPDATE rights; repository schema out of date after PDI upgrade; database disk full or connection dropped mid-save.
Related errors
- ERROR_0003_Cannot_Save_Job_Entry
- GetSequenceMeta.Exception.UnableToReadStepInfo
- GroupByMeta.Exception.UnableToSaveStepInfoToRepository
- JobCopyFiles.Error.Exception.UnableLoadRep
- JobEntryCopyMoveResultFilenames.CanNotLoadFromRep
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/a285e399d55b2dca.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/getslavesequence/GetSlaveSequenceMeta.java:129
valuename = rep.getStepAttributeString( id_step, "valuename" );
slaveServerName = rep.getStepAttributeString( id_step, "slave" );
sequenceName = rep.getStepAttributeString( id_step, "seqname" );
increment = rep.getStepAttributeString( id_step, "increment" );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "GetSequenceMeta.Exception.UnableToReadStepInfo" )
+ id_step, e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "valuename", valuename );
rep.saveStepAttribute( id_transformation, id_step, "slave", slaveServerName );
rep.saveStepAttribute( id_transformation, id_step, "seqname", sequenceName );
rep.saveStepAttribute( id_transformation, id_step, "increment", increment );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "GetSequenceMeta.Exception.UnableToSaveStepInfo" )
+ id_step, e );
}
}
@Override
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 ( input.length > 0 ) {
cr =
new CheckResult( CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString(
PKG, "GetSequenceMeta.CheckResult.StepIsReceving.Title" ), stepMeta );
remarks.add( cr );
} else {
cr =
new CheckResult( CheckResultInterface.TYPE_RESULT_ERROR, BaseMessages.getString(View on GitHub (pinned to f3058517a1)