pentaho/pentaho-kettle · error · KettleException
Unexpected error reading step information from the…
Error message
Unexpected error reading step information from the repository
What it means
SecretKeyGeneratorMeta.readRep throws KettleException with this message when any exception occurs while loading the step's attributes from the repository (Repository.getStepAttributeString/Boolean). It wraps repository I/O or driver failures during transformation load.
Solutions
- Check the wrapped cause for the repository/JDBC error and fix connectivity or credentials
- Verify id_step still exists: query the repository tables (R_STEP) for the transformation's step id
- Test the repository connection in Spoon before loading the transformation
- As a fallback, load the transformation from XML/KJB instead of the repository
Example fix
// before: loading with a stale repository object
transMeta.loadTransMeta(rep, id_transformation);
// after: verify connection first
if (!rep.connect("user", "pass")) throw new KettleException("repo unavailable");
transMeta.loadTransMeta(rep, id_transformation); Defensive patterns
Strategy: try-catch
Validate before calling
// before readRep
if (rep == null || id_step == null) throw new KettleException("Repository or step id not initialized");
// optionally: verify step exists in repository tables Try / catch
try { meta.readRep(rep, metaStore, id_step, null); } catch (KettleException e) { log.error("Repository read failed: " + e.getCause(), e); } Prevention
- Test repository connectivity before loading transformations
- Avoid concurrent delete/load of repository objects
- Keep repository schema versioned with your Pentaho release
When it happens
Trigger: Calling readRep(Repository rep, ObjectId id_step) when the repository connection fails, id_step is invalid/deleted, or the underlying JDBC/driver throws during attribute reads.
Common situations: Database repository unreachable or credentials changed; transformation rows deleted while another user loads them; repository schema version mismatch; network interruption between Pentaho and the repository DB.
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
- AccessInputMeta.Exception.ErrorReadingRepository
- AggregateRowsMeta.Exception.UnexpectedErrorWhileReadingStepInfo
- Unexpected error reading step information from the…
- XsdValidatorMeta.Exception.UnexpectedErrorInReadingStepInfo
- AddSequenceMeta.Exception.UnableToReadStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/3eb9a291d8202b8d.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/symmetriccrypto/secretkeygenerator/SecretKeyGeneratorMeta.java:343
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
try {
int nrfields = rep.countNrStepAttributes( id_step, "algorithm" );
allocate( nrfields );
for ( int i = 0; i < nrfields; i++ ) {
algorithm[i] = rep.getStepAttributeString( id_step, i, "algorithm" );
scheme[i] = rep.getStepAttributeString( id_step, i, "scheme" );
secretKeyLength[i] = rep.getStepAttributeString( id_step, i, "secretKeyLen" );
secretKeyCount[i] = rep.getStepAttributeString( id_step, i, "secretKeyCount" );
}
secretKeyFieldName = rep.getStepAttributeString( id_step, "secretKeyFieldName" );
secretKeyLengthFieldName = rep.getStepAttributeString( id_step, "secretKeyLengthFieldName" );
algorithmFieldName = rep.getStepAttributeString( id_step, "algorithmFieldName" );
outputKeyInBinary = rep.getStepAttributeBoolean( id_step, "outputKeyInBinary" );
} catch ( Exception e ) {
throw new KettleException( "Unexpected error reading step information from the repository", e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
for ( int i = 0; i < algorithm.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "algorithm", algorithm[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "scheme", scheme[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "secretKeyLen", secretKeyLength[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "secretKeyCount", secretKeyCount[i] );
}
rep.saveStepAttribute( id_transformation, id_step, "secretKeyFieldName", secretKeyFieldName );
rep.saveStepAttribute( id_transformation, id_step, "secretKeyLengthFieldName", secretKeyLengthFieldName );
rep.saveStepAttribute( id_transformation, id_step, "algorithmFieldName", algorithmFieldName );
rep.saveStepAttribute( id_transformation, id_step, "outputKeyInBinary", outputKeyInBinary );
} catch ( Exception e ) {
throw new KettleException( "Unable to save step information to the repository for id_step=" + id_step, e );View on GitHub (pinned to f3058517a1)