pentaho/pentaho-kettle · error · KettleException
GetSequenceMeta.Exception.UnableToReadStepInfo
Error message
GetSequenceMeta.Exception.UnableToReadStepInfo
What it means
GetSlaveSequenceMeta.readRep throws KettleException with 'UnableToReadStepInfo' (plus the step id) when reading the step's attributes from a repository fails. Any exception from rep.getStepAttributeString for valuename/slave/seqname/increment is wrapped with the id_step appended. This surfaces repository connectivity or schema problems during transformation load from a database repository.
Solutions
- Check the repository database connection and network availability.
- Verify the repository schema matches the PDI version (run repository upgrade if needed).
- Grant the repository user SELECT on r_step_attribute.
- Export the transformation from the repository to XML as a workaround and load from file.
Defensive patterns
Strategy: try-catch
Validate before calling
// Verify repository connectivity before loading Repository rep = new KettleDatabaseRepository(); rep.connect( username, password ); if ( !rep.isConnected() ) throw new IllegalStateException( "Repository not connected" );
Try / catch
try {
TransMeta tm = new TransMeta( rep, transName, directory );
} catch ( KettleException e ) {
if ( e.getMessage().startsWith( "UnableToReadStepInfo" ) || e.getMessage().contains( "UnableToReadStepInfo" ) ) {
// check DB connection / repository schema, then retry or load from XML fallback
} else throw e;
} Prevention
- Schedule repository schema upgrades with every PDI upgrade
- Monitor repository DB availability before batch loads
- Grant repository users SELECT on r_step_attribute
- Keep XML exports as a fallback load path
When it happens
Trigger: Loading a transformation from a repository; the underlying repository throws while executing getStepAttributeString, e.g. DB connection lost mid-load or r_step_attribute table missing/corrupt.
Common situations: Database repository unavailable or network dropped; repository schema not upgraded after a PDI version change; insufficient DB permissions to read r_step_attribute; corrupted repository rows.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- GetSequenceMeta.Exception.UnableToSaveStepInfo
- JobCopyFiles.Error.Exception.UnableLoadRep
- JobEntryCopyMoveResultFilenames.CanNotLoadFromRep
- JobMoveFiles.Error.Exception.UnableLoadRep
- Unable to load job entry of type 'create file' from the…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/4cb14178d0647420.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/getslavesequence/GetSlaveSequenceMeta.java:116
StringBuilder retval = new StringBuilder( 300 );
retval.append( " " ).append( XMLHandler.addTagValue( "valuename", valuename ) );
retval.append( " " ).append( XMLHandler.addTagValue( "slave", slaveServerName ) );
retval.append( " " ).append( XMLHandler.addTagValue( "seqname", sequenceName ) );
retval.append( " " ).append( XMLHandler.addTagValue( "increment", increment ) );
return retval.toString();
}
@Override
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
try {
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 );
}
}
@OverrideView on GitHub (pinned to f3058517a1)