pentaho/pentaho-kettle · error · KettleException
CombinationLookupMeta.Exception.UnexpectedErrorWhileReadingS…
Error message
CombinationLookupMeta.Exception.UnexpectedErrorWhileReadingStepInfo
What it means
Generic KettleException thrown by CombinationLookupMeta.readRep when reading the step's configuration from the repository (database-backed metadata) fails. The wrapped cause is the repository/SQL error; the localized message means 'Unexpected error while reading step info from the repository'.
Solutions
- Check the wrapped cause for the repository SQL/connection error and fix repository connectivity or permissions.
- Run the repository upgrade scripts matching your PDI version so the attribute schema is current.
- Open the transformation from a file export instead of the repository to isolate the bad step, then re-save it.
- Restore/rebuild the affected step metadata in the repository.
Example fix
// no code fix; operational remedy: // apply repository DDL upgrade, e.g. run // sql/upgrade/<version>/<dbtype>/upgrade_r_step_attribute.sql // then reconnect and reopen the transformation.
Defensive patterns
Strategy: try-catch
Validate before calling
// pre-check repository health before loading
// Repository.connect("user", "pass");
// rep.getStepAttributeBoolean(id_step, "use_autoinc"); // smoke-test attribute access Try / catch
try {
transMeta = repository.loadTransformation(objectId, null);
} catch (KettleException e) {
log.error("Repository read of step failed: " + e.getCause(), e);
} Prevention
- Keep repository schema in sync with the PDI version (run upgrade scripts).
- Monitor repository database connectivity and permissions.
- Export transformations to file as a recovery path.
- Back up the repository before upgrades.
When it happens
Trigger: readRep (invoked when a transformation is loaded from a repository) throws while calling rep.getStepAttributeString/getStepAttributeBoolean for attributes like return_name, use_autoinc, sequence, creation_method, last_update_field.
Common situations: Repository database unreachable or schema out of sync after a PDI upgrade (missing r_step_attribute rows/columns); corrupted repository rows; permission problems on the repository tables.
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
- AppendMeta.Exception.UnexpectedErrorReadingStepInfo
- NormaliserMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
- NullIfMeta.Exception.UnexpectedErrorReadingStepInfoFromRepos…
- AccessInputMeta.Exception.ErrorReadingRepository
- AddSequenceMeta.Exception.UnableToReadStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/cf2c58c7636cde2a.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/combinationlookup/CombinationLookupMeta.java:565
useHash = rep.getStepAttributeBoolean( id_step, "crc" );
hashField = rep.getStepAttributeString( id_step, "crcfield" );
int nrkeys = rep.countNrStepAttributes( id_step, "lookup_key_name" );
allocate( nrkeys );
for ( int i = 0; i < nrkeys; i++ ) {
keyField[ i ] = rep.getStepAttributeString( id_step, i, "lookup_key_name" );
keyLookup[ i ] = rep.getStepAttributeString( id_step, i, "lookup_key_field" );
}
technicalKeyField = rep.getStepAttributeString( id_step, "return_name" );
useAutoinc = rep.getStepAttributeBoolean( id_step, "use_autoinc" );
sequenceFrom = rep.getStepAttributeString( id_step, "sequence" );
techKeyCreation = rep.getStepAttributeString( id_step, "creation_method" );
lastUpdateField = rep.getStepAttributeString( id_step, "last_update_field" );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "CombinationLookupMeta.Exception.UnexpectedErrorWhileReadingStepInfo" ), e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
rep.saveStepAttribute( id_transformation, id_step, "table", tablename );
rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", databaseMeta );
rep.saveStepAttribute( id_transformation, id_step, "commit", commitSize );
rep.saveStepAttribute( id_transformation, id_step, "cache_size", cacheSize );
rep.saveStepAttribute( id_transformation, id_step, "replace", replaceFields );
rep.saveStepAttribute( id_transformation, id_step, "preloadCache", preloadCache );
rep.saveStepAttribute( id_transformation, id_step, "crc", useHash );
rep.saveStepAttribute( id_transformation, id_step, "crcfield", hashField );View on GitHub (pinned to f3058517a1)