pentaho/pentaho-kettle · error · KettleException

DimensionLookupMeta.Exception.UnexpectedErrorReadingStepInfo…

Error message

DimensionLookupMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository

What it means

DimensionLookupMeta.readRep wraps any exception that occurs while reading this step's configuration attributes from the Kettle repository into a KettleException with this message key. It indicates the step definition stored in the repository could not be read (attribute lookup failed unexpectedly), with the original cause attached.

Solutions

  1. Inspect the wrapped cause (KettleException.getCause()) to identify the actual repository failure
  2. Verify the step record exists and is intact in the repository; re-save the transformation
  3. Check repository connectivity/credentials and retry loading the transformation
  4. Recreate the Dimension Lookup step if its repository record is corrupted

Example fix

// before
DimensionLookupMeta meta = new DimensionLookupMeta();
meta.readRep(rep, metaStore, idStep, null);
// after
try {
  DimensionLookupMeta meta = new DimensionLookupMeta();
  meta.readRep(rep, metaStore, idStep, null);
} catch (KettleException e) {
  logError("Failed reading Dimension Lookup step " + idStep + " from repository: " + e.getCause(), e);
  throw e;
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify repository and step accessibility before readRep
if (!rep.isConnected()) throw new IllegalStateException("Repository not connected");
StepMeta step = transMeta.findStep(stepName);
if (step == null) throw new IllegalArgumentException("Step not found: " + stepName);

Try / catch

try {
  meta.readRep(rep, metaStore, idStep, null);
} catch (KettleException e) {
  logError("Repository read failed for step " + idStep + ": " + e.getCause(), e);
  throw e;
}

Prevention

When it happens

Trigger: Calling readRep(Repository, MetaStore, ObjectId id_step, ...) when a repository API call such as rep.getStepAttributeBoolean/String throws for the given id_step (corrupt or missing step record, repository connectivity failure mid-read).

Common situations: Corrupt repository rows after failed upgrades; a transformation XML/DB record missing expected step attributes; network or session loss to the repository server while loading a transformation.

Understand the failure class

Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/e81fb205ec873375. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/dimensionlookup/DimensionLookupMeta.java:1018

      keyRename = rep.getStepAttributeString( id_step, "return_rename" );
      autoIncrement = rep.getStepAttributeBoolean( id_step, "use_autoinc" );
      versionField = rep.getStepAttributeString( id_step, "version_field" );
      techKeyCreation = rep.getStepAttributeString( id_step, "creation_method" );
      if ( update ) { // symmetry with readData above ...
        sequenceName = rep.getStepAttributeString( id_step, "sequence" );
      }
      minYear = (int) rep.getStepAttributeInteger( id_step, "min_year" );
      maxYear = (int) rep.getStepAttributeInteger( id_step, "max_year" );

      cacheSize = (int) rep.getStepAttributeInteger( id_step, "cache_size" );
      preloadingCache = rep.getStepAttributeBoolean( id_step, "preload_cache" );
      useBatchUpdate = rep.getStepAttributeBoolean( id_step, "useBatch" );

      usingStartDateAlternative = rep.getStepAttributeBoolean( id_step, "use_start_date_alternative" );
      startDateAlternative = getStartDateAlternative( rep.getStepAttributeString( id_step, "start_date_alternative" ) );
      startDateFieldName = rep.getStepAttributeString( id_step, "start_date_field_name" );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG,
          "DimensionLookupMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository" ), e );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )
    throws KettleException {
    try {
      actualizeWithInjectedValues();
      rep.saveStepAttribute( id_transformation, id_step, "schema", schemaName );
      rep.saveStepAttribute( id_transformation, id_step, "table", tableName );
      rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, "id_connection", databaseMeta );
      rep.saveStepAttribute( id_transformation, id_step, "commit", commitSize );
      rep.saveStepAttribute( id_transformation, id_step, "update", update );

      for ( int i = 0; i < keyStream.length; i++ ) {
        rep.saveStepAttribute( id_transformation, id_step, i, "lookup_key_name", keyStream[i] );
        rep.saveStepAttribute( id_transformation, id_step, i, "lookup_key_field", keyLookup[i] );

View on GitHub (pinned to f3058517a1)