pentaho/pentaho-kettle · error · KettleException
AddSequenceMeta.Exception.UnableToReadStepInfo
Error message
AddSequenceMeta.Exception.UnableToReadStepInfo
What it means
AddSequenceMeta.readRep() loads the step's settings from a repository by reading step attributes for id_step; any Exception raised while reading those attributes is rethrown as a KettleException with this message plus the step id. It means the step's metadata could not be read from the repository database for that step id.
Solutions
- Run the repository upgrade/maintenance scripts for your Kettle version to ensure step attribute tables match the expected schema
- Verify the step with that id_step still exists in r_step and its attribute rows are intact in the repository database
- Check repository connectivity and user permissions; fix connection settings or grants as needed
- Export the transformation to XML from a working environment and re-import it if repository rows are unrecoverable
Example fix
-- before: attribute row missing for the step SELECT * FROM r_step_attribute WHERE ID_STEP = 42; -- empty -- after: re-save the step from Spoon so attributes are rewritten -- Spoon: open transformation, re-save AddSequence step to repository
Defensive patterns
Strategy: try-catch
Validate before calling
long attrCount = rep.countStepAttributes(id_step);
if (attrCount == 0) throw new IllegalStateException("No repository attributes for step id " + id_step + "; step data missing"); Type guard
boolean stepExistsInRepo(Repository rep, ObjectId idStep) throws KettleException {
return rep.getStepAttributeString(idStep, "valuename") != null;
} Try / catch
try {
meta.readRep(rep, metaStore, idStep, databases);
} catch (KettleException e) {
if (e.getMessage().contains("UnableToReadStepInfo")) {
logError("Repository read failed for step id " + idStep + ": " + e.getCause());
// re-export from XML source or restore from backup
} else throw e;
} Prevention
- Run repository upgrade scripts after every Kettle version change
- Verify step ids exist in r_step before loading programmatically
- Maintain XML exports of critical transformations as a recovery path
- Check repository DB connectivity and grants before batch loading transformations
When it happens
Trigger: readRep(rep, id_step, ...) throws because the repository connection fails, the step row/attributes for id_step do not exist, or an attribute value cannot be converted (e.g. getStepAttributeInteger on corrupt data). The step id is appended to the message for diagnosis.
Common situations: Repository database schema mismatch after a Kettle upgrade (missing r_step_attribute rows); stale transformation referencing a deleted step id; repository connectivity/permission problems at load time.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- LDIFInputMeta.Exception.ErrorReadingRepository
- LDIFInputMeta.Exception.ErrorSavingToRepository
- Unable to save step information to the repository for…
- Unexpected error reading step information from the…
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/57d5931c58c138b6.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/addsequence/AddSequenceMeta.java:334
// Fix for backwards compatibility, only to be used from previous versions (TO DO Sven Boden: remove in later
// versions)
if ( startAt == null ) {
long start = rep.getStepAttributeInteger( id_step, "start_at" );
startAt = Long.toString( start );
}
if ( incrementBy == null ) {
long increment = rep.getStepAttributeInteger( id_step, "increment_by" );
incrementBy = Long.toString( increment );
}
if ( maxValue == null ) {
long max = rep.getStepAttributeInteger( id_step, "max_value" );
maxValue = Long.toString( max );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "AddSequenceMeta.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, "use_database", useDatabase );
rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", database );
rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
rep.saveStepAttribute( id_transformation, id_step, "seqname", sequenceName );
rep.saveStepAttribute( id_transformation, id_step, "use_counter", useCounter );
rep.saveStepAttribute( id_transformation, id_step, "counter_name", counterName );View on GitHub (pinned to f3058517a1)