pentaho/pentaho-kettle · error · KettleException

DimensionLookupMeta.Exception.UnableToLoadDimensionLookupInf…

Error message

DimensionLookupMeta.Exception.UnableToLoadDimensionLookupInfoFromRepository

What it means

DimensionLookupMeta.saveRep wraps a KettleDatabaseException raised while persisting the step's settings (including inserting the step-database relationship) into a KettleException with this message key. It means the step's configuration could not be saved to the repository database.

Solutions

  1. Inspect the wrapped KettleDatabaseException cause for the underlying SQL error
  2. Verify the referenced databaseMeta connection still exists in the repository and re-save it first
  3. Check repository DB availability, permissions, and disk space
  4. Retry saving; if the step row is corrupt, delete and recreate the step

Example fix

// before
meta.saveRep(rep, metaStore, idTransformation, idStep);
// after
try {
  meta.saveRep(rep, metaStore, idTransformation, idStep);
} catch (KettleException e) {
  logError("Save failed for Dimension Lookup step: " + e.getCause(), e);
  throw e;
}
Defensive patterns

Strategy: try-catch

Validate before calling

// Ensure the referenced DB connection exists in the repository before save
if (meta.getDatabaseMeta() != null && rep.findDatabase(meta.getDatabaseMeta().getName()) == null) {
  meta.getDatabaseMeta().saveRep(rep);
}

Try / catch

try {
  meta.saveRep(rep, metaStore, idTrans, idStep);
} catch (KettleException e) {
  logError("Repository save failed: " + e.getCause(), e);
  throw e;
}

Prevention

When it happens

Trigger: Calling saveRep(Repository, IMetaStore, ObjectId id_transformation, ObjectId id_step) when repository insert/update calls (e.g. rep.insertStepDatabase) throw KettleDatabaseException — repository DB down, constraint violation, or bad ObjectIds.

Common situations: Repository database locked, read-only, or out of space; dangling databaseMeta reference whose ObjectId does not exist; saving a transformation copied between repositories.

Related errors


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

Appendix: source

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

      rep.saveStepAttribute( id_transformation, id_step, "min_year", minYear );
      rep.saveStepAttribute( id_transformation, id_step, "max_year", maxYear );

      rep.saveStepAttribute( id_transformation, id_step, "cache_size", cacheSize );
      rep.saveStepAttribute( id_transformation, id_step, "preload_cache", preloadingCache );
      rep.saveStepAttribute( id_transformation, id_step, "useBatch", useBatchUpdate );

      rep.saveStepAttribute( id_transformation, id_step, "use_start_date_alternative", usingStartDateAlternative );
      rep.saveStepAttribute( id_transformation, id_step, "start_date_alternative", getStartDateAlternativeCode(
          startDateAlternative ) );
      rep.saveStepAttribute( id_transformation, id_step, "start_date_field_name", startDateFieldName );

      // Also, save the step-database relationship!
      if ( databaseMeta != null ) {
        rep.insertStepDatabase( id_transformation, id_step, databaseMeta.getObjectId() );
      }

    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG,
          "DimensionLookupMeta.Exception.UnableToLoadDimensionLookupInfoFromRepository" ), dbe );
    }
  }

  public Date getMinDate() {
    Calendar mincal = Calendar.getInstance();
    mincal.set( Calendar.YEAR, minYear );
    mincal.set( Calendar.MONTH, 0 );
    mincal.set( Calendar.DAY_OF_MONTH, 1 );
    mincal.set( Calendar.HOUR_OF_DAY, 0 );
    mincal.set( Calendar.MINUTE, 0 );
    mincal.set( Calendar.SECOND, 0 );
    mincal.set( Calendar.MILLISECOND, 0 );

    return mincal.getTime();
  }

  public Date getMaxDate() {

View on GitHub (pinned to f3058517a1)