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

  1. Verify the repository connection (test the repository login in Spoon) and retry the load
  2. Recreate or re-save the OraBulkLoader step so its attributes are rewritten
  3. Check the repository schema version matches the Pentaho version (run the upgrade scripts)
  4. 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

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


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)