pentaho/pentaho-kettle · error · KettleException
UpdateMeta.Exception.UnexpectedErrorReadingStepInfoFromRepos…
Error message
UpdateMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
What it means
Outer catch-all in UpdateMeta.readRep: an unexpected exception occurred while reading the update step's key/value attributes from the repository (after keys and values were allocated). The cause is attached; testReadRepAllocatesSizeProperly exercises this code path.
Solutions
- Check the wrapped cause for the repository error and verify repository connectivity
- Re-open the transformation in Spoon and re-save the Update step to rewrite its attributes
- Run repository upgrade/repair scripts matching your PDI version
- Export the transformation to XML as a fallback and fix it there
Example fix
// before r_step_attribute row for 'value_name' deleted // after re-save step via Spoon or run repository repair so attributes exist
Defensive patterns
Strategy: try-catch
Validate before calling
// Before load, verify repository reachable and step row present: // ObjectId id = repository.getStepID(id_transformation, stepName);
Try / catch
try { transMeta.readRep(repository, ...); } catch (KettleException e) { log.error("Repository read failed: " + e.getCause(), e); } Prevention
- Keep repository schema scripts in sync with PDI version
- Test repository connection before opening transformations
- Back up repository tables before repairs/migrations
When it happens
Trigger: readRep -> rep.getStepAttributeString calls throw (repository connectivity, missing step row, corrupt r_step_attribute data) while loading the transformation from a database repository.
Common situations: Database repository schema version mismatch; corrupted or partially deleted step attributes; repository connection dropped mid-load.
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
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
- FileExistsMeta.Exception.UnableToSaveStepInfo
- FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- GetPreviousRowFieldMeta.Exception.UnexpectedErrorInReadingSt…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/7036611e450896dc.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/update/UpdateMeta.java:531
int nrValueRename = rep.countNrStepAttributes( id_step, "value_rename" );
int nrvalues = Ints.max( nrValueName, nrValueRename );
allocate( nrkeys, nrvalues );
for ( int i = 0; i < nrkeys; i++ ) {
keyStream[i] = rep.getStepAttributeString( id_step, i, "key_name" );
keyLookup[i] = rep.getStepAttributeString( id_step, i, "key_field" );
keyCondition[i] = rep.getStepAttributeString( id_step, i, "key_condition" );
keyStream2[i] = rep.getStepAttributeString( id_step, i, "key_name2" );
}
for ( int i = 0; i < nrvalues; i++ ) {
updateLookup[i] = rep.getStepAttributeString( id_step, i, "value_name" );
updateStream[i] = rep.getStepAttributeString( id_step, i, "value_rename" );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "UpdateMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository" ), e );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", databaseMeta );
rep.saveStepAttribute( id_transformation, id_step, "skip_lookup", skipLookup );
rep.saveStepAttribute( id_transformation, id_step, "commit", commitSize );
rep.saveStepAttribute( id_transformation, id_step, "use_batch", useBatchUpdate );
rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
rep.saveStepAttribute( id_transformation, id_step, "table", tableName );
rep.saveStepAttribute( id_transformation, id_step, "error_ignored", errorIgnored );
rep.saveStepAttribute( id_transformation, id_step, "ignore_flag_field", ignoreFlagField );
for ( int i = 0; i < keyStream.length; i++ ) {View on GitHub (pinned to f3058517a1)