{"record":{"id":"f5eba1874e0489d9","repo":"pentaho/pentaho-kettle","slug":"dimensionlookupmeta-exception-f5eba1","errorCode":null,"errorMessage":"DimensionLookupMeta.Exception.UnableToLoadDimensionLookupInfoFromRepository","messagePattern":"DimensionLookupMeta\\.Exception\\.UnableToLoadDimensionLookupInfoFromRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/dimensionlookup/DimensionLookupMeta.java","lineNumber":1080,"sourceCode":"      rep.saveStepAttribute( id_transformation, id_step, \"min_year\", minYear );\n      rep.saveStepAttribute( id_transformation, id_step, \"max_year\", maxYear );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"cache_size\", cacheSize );\n      rep.saveStepAttribute( id_transformation, id_step, \"preload_cache\", preloadingCache );\n      rep.saveStepAttribute( id_transformation, id_step, \"useBatch\", useBatchUpdate );\n\n      rep.saveStepAttribute( id_transformation, id_step, \"use_start_date_alternative\", usingStartDateAlternative );\n      rep.saveStepAttribute( id_transformation, id_step, \"start_date_alternative\", getStartDateAlternativeCode(\n          startDateAlternative ) );\n      rep.saveStepAttribute( id_transformation, id_step, \"start_date_field_name\", startDateFieldName );\n\n      // Also, save the step-database relationship!\n      if ( databaseMeta != null ) {\n        rep.insertStepDatabase( id_transformation, id_step, databaseMeta.getObjectId() );\n      }\n\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG,\n          \"DimensionLookupMeta.Exception.UnableToLoadDimensionLookupInfoFromRepository\" ), dbe );\n    }\n  }\n\n  public Date getMinDate() {\n    Calendar mincal = Calendar.getInstance();\n    mincal.set( Calendar.YEAR, minYear );\n    mincal.set( Calendar.MONTH, 0 );\n    mincal.set( Calendar.DAY_OF_MONTH, 1 );\n    mincal.set( Calendar.HOUR_OF_DAY, 0 );\n    mincal.set( Calendar.MINUTE, 0 );\n    mincal.set( Calendar.SECOND, 0 );\n    mincal.set( Calendar.MILLISECOND, 0 );\n\n    return mincal.getTime();\n  }\n\n  public Date getMaxDate() {","sourceCodeStart":1062,"sourceCodeEnd":1098,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/dimensionlookup/DimensionLookupMeta.java#L1062-L1098","documentation":"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.","triggerScenarios":"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.","commonSituations":"Repository database locked, read-only, or out of space; dangling databaseMeta reference whose ObjectId does not exist; saving a transformation copied between repositories.","solutions":["Inspect the wrapped KettleDatabaseException cause for the underlying SQL error","Verify the referenced databaseMeta connection still exists in the repository and re-save it first","Check repository DB availability, permissions, and disk space","Retry saving; if the step row is corrupt, delete and recreate the step"],"exampleFix":"// before\nmeta.saveRep(rep, metaStore, idTransformation, idStep);\n// after\ntry {\n  meta.saveRep(rep, metaStore, idTransformation, idStep);\n} catch (KettleException e) {\n  logError(\"Save failed for Dimension Lookup step: \" + e.getCause(), e);\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"// Ensure the referenced DB connection exists in the repository before save\nif (meta.getDatabaseMeta() != null && rep.findDatabase(meta.getDatabaseMeta().getName()) == null) {\n  meta.getDatabaseMeta().saveRep(rep);\n}","typeGuard":null,"tryCatchPattern":"try {\n  meta.saveRep(rep, metaStore, idTrans, idStep);\n} catch (KettleException e) {\n  logError(\"Repository save failed: \" + e.getCause(), e);\n  throw e;\n}","preventionTips":["Save shared database connections before steps referencing them","Monitor repository DB space/locks during bulk saves","Avoid copying steps between repositories without re-linking connections","Check the wrapped KettleDatabaseException for SQL-level diagnostics"],"tags":["kettle","repository","database"],"backgroundTag":"database-write-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}