pentaho/pentaho-kettle · error · KettleException
DeleteMeta.Exception.UnexpectedErrorInReadingStepInfo
DeleteMeta.Exception.UnexpectedErrorInReadingStepInfo
Error message
DeleteMeta.Exception.UnexpectedErrorInReadingStepInfo
What it means
DeleteMeta.readRep loads the step configuration from a repository (database). Any exception while reading step attributes (key stream/lookup/condition/name2 per key field) is wrapped in a KettleException with this generic message plus the root cause. It means the Delete step's metadata could not be loaded from the repository.
Solutions
- Check the cause of the KettleException for the repository-level error (connectivity, SQL, missing table).
- Verify the repository connection and that the repository schema version matches your Pentaho version (run the repository upgrade tool if needed).
- Re-save the transformation/step from Spoon to repopulate the repository attributes.
- If only one transformation fails, recreate the Delete step in that transformation.
Example fix
// before rep connection pointing at r_schema v5 while running Pentaho v9 // after run repository upgrade scripts so r_step_attribute matches the current Pentaho version
Defensive patterns
Strategy: try-catch
Validate before calling
// Before loading: check repository reachability
if (!repository.connect(username, password).isEmpty()) { throw new IllegalStateException("repo unavailable"); } Try / catch
try { transMeta.loadFromRepository(dir, monitor, null); } catch (KettleException e) {
log.error("Repository read failed for step {}: {}", stepId, e.getCause(), e);
} Prevention
- Keep the repository schema version aligned with the Pentaho version.
- Monitor repository DB connectivity before batch jobs.
- Re-save steps after repository maintenance.
- Check the cause chain to distinguish connectivity vs schema issues.
When it happens
Trigger: readRep calls rep.getStepAttributeString(...) for key fields and any underlying repository exception (connection failure, missing rows, schema mismatch) occurs; caught and rethrown as KettleException.
Common situations: Repository database unavailable or schema not upgraded after a Pentaho version change; orphaned step rows; network drop mid-load; loading a transformation whose step attributes were partially deleted.
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
- AbortMeta.Exception.UnableToSaveStepInfoToRepository
- AccessInputMeta.Exception.ErrorReadingRepository
- AddSequenceMeta.Exception.UnableToReadStepInfo
- AggregateRowsMeta.Exception.UnexpectedErrorWhileReadingStepInfo
- An error occured loading the directory tree from the…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/4aa1c590d00c000e.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/delete/DeleteMeta.java:311
if ( comSz >= 0 ) {
commitSize = Long.toString( comSz );
}
}
schemaName = rep.getStepAttributeString( id_step, TAG_SCHEMA );
tableName = rep.getStepAttributeString( id_step, TAG_TABLE );
int nrkeys = rep.countNrStepAttributes( id_step, TAG_KEY_FIELD );
allocate( nrkeys );
for ( int i = 0; i < nrkeys; i++ ) {
keyFields[i].setKeyStream( rep.getStepAttributeString( id_step, i, TAG_KEY_NAME ) );
keyFields[i].setKeyLookup( rep.getStepAttributeString( id_step, i, TAG_KEY_FIELD ) );
keyFields[i].setKeyCondition( rep.getStepAttributeString( id_step, i, TAG_KEY_CONDITION ) );
keyFields[i].setKeyStream2( rep.getStepAttributeString( id_step, i, TAG_KEY_NAME2 ) );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "DeleteMeta.Exception.UnexpectedErrorInReadingStepInfo" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, TAG_ID_CONNECTION, databaseMeta );
rep.saveStepAttribute( id_transformation, id_step, TAG_COMMIT, commitSize );
rep.saveStepAttribute( id_transformation, id_step, TAG_SCHEMA, schemaName );
rep.saveStepAttribute( id_transformation, id_step, TAG_TABLE, tableName );
for ( int i = 0; i < keyFields.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, TAG_KEY_NAME, keyFields[i].getKeyStream() );
rep.saveStepAttribute( id_transformation, id_step, i, TAG_KEY_FIELD, keyFields[i].getKeyLookup() );
rep.saveStepAttribute( id_transformation, id_step, i, TAG_KEY_CONDITION, keyFields[i].getKeyCondition() );
rep.saveStepAttribute( id_transformation, id_step, i, TAG_KEY_NAME2, keyFields[i].getKeyStream2() );
}
View on GitHub (pinned to f3058517a1)