pentaho/pentaho-kettle · error · KettleException
OraBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFr…
Error message
OraBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository
What it means
readRep() loads step settings from the repository; any Exception while reading step attributes is wrapped in a KettleException with OraBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository as message. It indicates the stored repository representation of the step could not be read (query failure, missing rows, repository API error).
Solutions
- Verify the repository connection (test the repository login in Spoon) and retry the load
- Recreate or re-save the OraBulkLoader step so its attributes are rewritten
- Check the repository schema version matches the Pentaho version (run the upgrade scripts)
- Restore affected r_step_attribute rows from a repository backup
Defensive patterns
Strategy: try-catch
Validate before calling
// test repository access before loading step metadata
rep.connect( "user", "pass" );
if ( rep.getStepAttributeString( id_step, "table" ) == null ) {
// attributes missing — re-save the step from Spoon
} Try / catch
try {
meta.readRep( rep, metaStore, id_step, databases );
} catch ( KettleException e ) {
if ( e.getMessage().contains( "UnexpectedErrorReadingStepInfoFromRepository" ) ) {
// check repository connectivity and re-save the step
}
} Prevention
- Keep repository schema in sync with the Pentaho version
- Back up repository tables before migrations
- Avoid manual edits to r_step_attribute rows
When it happens
Trigger: rep.getStepAttributeString/getStepAttributeNumber calls inside readRep throw — repository connection problems, schema mismatches, or corrupted step attribute rows for id_step.
Common situations: Repository database unavailable or credentials expired; r_step_attribute rows manually edited/deleted; upgrading Pentaho against an old repository schema; partial repository migration.
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
- GPLoadMeta.Exception.UnexpectedErrorReadingStepInfoFromRepos…
- JobEntryMSAccessBulkLoad.Meta.UnableLoadRep
- JsonInputMeta.Exception.ErrorReadingRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/00b59554ddb4eb6c.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/oracle-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/orabulkloader/OraBulkLoaderMeta.java:563
dbNameOverride = rep.getStepAttributeString( id_step, "dbname_override" );
characterSetName = rep.getStepAttributeString( id_step, "character_set" );
failOnWarning = rep.getStepAttributeBoolean( id_step, "fail_on_warning" );
failOnError = rep.getStepAttributeBoolean( id_step, "fail_on_error" );
parallel = rep.getStepAttributeBoolean( id_step, "parallel" );
altRecordTerm = rep.getStepAttributeString( id_step, "alt_rec_term" );
int nrvalues = rep.countNrStepAttributes( id_step, "stream_name" );
allocate( nrvalues );
for ( int i = 0; i < nrvalues; i++ ) {
fieldTable[i] = rep.getStepAttributeString( id_step, i, "stream_name" );
fieldStream[i] = rep.getStepAttributeString( id_step, i, "field_name" );
dateMask[i] = rep.getStepAttributeString( id_step, i, "date_mask" );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "OraBulkLoaderMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository" ), e );
}
}
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, "commit", commitSize );
rep.saveStepAttribute( id_transformation, id_step, "bind_size", bindSize );
rep.saveStepAttribute( id_transformation, id_step, "read_size", readSize );
rep.saveStepAttribute( id_transformation, id_step, "errors", maxErrors );
rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
rep.saveStepAttribute( id_transformation, id_step, "table", tableName );
rep.saveStepAttribute( id_transformation, id_step, "load_method", loadMethod );
rep.saveStepAttribute( id_transformation, id_step, "load_action", loadAction );
rep.saveStepAttribute( id_transformation, id_step, "sqlldr", sqlldr );
rep.saveStepAttribute( id_transformation, id_step, "control_file", controlFile );View on GitHub (pinned to f3058517a1)