pentaho/pentaho-kettle · error · KettleException

GPLoadMeta.Exception.UnexpectedErrorReadingStepInfoFromRepos…

Error message

GPLoadMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository

What it means

GPLoadMeta.readRep() loads step settings from the repository database; any exception is wrapped in a KettleException with this message. It signals a failure while reading GPload attributes (connection, table, field names, masks, match/update columns) for the given step id.

Solutions

  1. Verify repository connectivity and retry the transformation load
  2. Check repository schema version and run the repository upgrade/repair tools
  3. Inspect the wrapped cause (e.getCause()) for the underlying SQL/repository error
  4. Delete and re-create the step (re-save its settings) if its repository rows are corrupt

Example fix

// before
// step attributes partially missing in repository for id_step
// after
// re-open the step in Spoon, re-enter GPload settings, and Save to repopulate attributes
Defensive patterns

Strategy: try-catch

Validate before calling

// before reading: confirm repository reachable and step id has attributes
if (rep == null || !rep.isConnected()) throw new IllegalStateException("Repository not connected");
List<Object[]> attrs = rep.getStepAttributes(id_step); // pseudo-check; fail fast if empty/corrupt

Try / catch

try { loadTransFromRepository(...) } catch (KettleException e) {
  if (e.getMessage().contains("UnexpectedErrorReadingStepInfoFromRepository")) {
    logError("Repository read failed for step " + id_step + ": " + e.getCause());
  }
  throw e;
}

Prevention

When it happens

Trigger: Repository calls inside readRep (getStepAttributeString/getStepAttributeBoolean) throw — repository connection lost mid-read, schema mismatch in R_STEP_ATTRIBUTE, or corrupted/missing rows for id_step.

Common situations: Repository database unavailable or restarted during load; repository schema version older than the plugin expects; rows deleted or corrupted in the repository tables; permissions issues reading step attributes.

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/be7bff661f98fbfb. Report an issue: GitHub.

Appendix: source

Thrown at plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoadMeta.java:493

      int numberOfLocalHosts = rep.countNrStepAttributes( id_step, "local_host" );
      allocateLocalHosts( numberOfLocalHosts );
      for ( int i = 0; i < numberOfLocalHosts; i++ ) {
        localHosts[i] = rep.getStepAttributeString( id_step, i, "local_host" );
      }

      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" );
        matchColumn[i] = rep.getStepAttributeBoolean( id_step, i, "match_column" );
        updateColumn[i] = rep.getStepAttributeBoolean( id_step, i, "update_column" );
      }
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG,
          "GPLoadMeta.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, "errors", maxErrors );
      rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
      rep.saveStepAttribute( id_transformation, id_step, "table", tableName );
      rep.saveStepAttribute( id_transformation, id_step, "error_table", errorTableName );
      rep.saveStepAttribute( id_transformation, id_step, "load_method", loadMethod );
      rep.saveStepAttribute( id_transformation, id_step, "load_action", loadAction );
      rep.saveStepAttribute( id_transformation, id_step, "gpload_path", gploadPath );
      rep.saveStepAttribute( id_transformation, id_step, "control_file", controlFile );
      rep.saveStepAttribute( id_transformation, id_step, "data_file", dataFile );
      rep.saveStepAttribute( id_transformation, id_step, "delimiter", delimiter );

View on GitHub (pinned to f3058517a1)