{"record":{"id":"0fdaadfb9bb1696a","repo":"pentaho/pentaho-kettle","slug":"jobfolderscompare-meta-unableloadrep","errorCode":null,"errorMessage":"JobFoldersCompare.Meta.UnableLoadRep","messagePattern":"JobFoldersCompare\\.Meta\\.UnableLoadRep","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/folderscompare/JobEntryFoldersCompare.java","lineNumber":155,"sourceCode":"    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG, \"JobFoldersCompare.Meta.UnableLoadXML\", xe\n        .getMessage() ) );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      includesubfolders = rep.getJobEntryAttributeBoolean( id_jobentry, \"include_subfolders\" );\n      comparefilecontent = rep.getJobEntryAttributeBoolean( id_jobentry, \"compare_filecontent\" );\n      comparefilesize = rep.getJobEntryAttributeBoolean( id_jobentry, \"compare_filesize\" );\n\n      compareonly = rep.getJobEntryAttributeString( id_jobentry, \"compareonly\" );\n      wildcard = rep.getJobEntryAttributeString( id_jobentry, \"wildcard\" );\n      filename1 = rep.getJobEntryAttributeString( id_jobentry, \"filename1\" );\n      filename2 = rep.getJobEntryAttributeString( id_jobentry, \"filename2\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"JobFoldersCompare.Meta.UnableLoadRep\", \"\"\n        + id_jobentry, dbe.getMessage() ) );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"include_subfolders\", includesubfolders );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"compare_filecontent\", comparefilecontent );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"compare_filesize\", comparefilesize );\n\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"compareonly\", compareonly );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"wildcard\", wildcard );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"filename1\", filename1 );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"filename2\", filename2 );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"JobFoldersCompare.Meta.UnableSaveRep\", \"\" + id_job, dbe.getMessage() ) );\n    }","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/folderscompare/JobEntryFoldersCompare.java#L137-L173","documentation":"Thrown by JobEntryFoldersCompare.loadRep when reading the entry's attributes (compareonly, wildcard, filename1, filename2) from the repository fails with a KettleException. The message is a localized bundle key formatted with the id_jobentry and the cause's message. It means the 'Compare Folders' entry could not be hydrated from the repository.","triggerScenarios":"Calling loadRep on JobEntryFoldersCompare when rep.getJobEntryAttributeString throws KettleException — repository DB error, missing r_jobentry_attribute rows for id_jobentry, or connection failure.","commonSituations":"Corrupt or partially deleted repository rows; repository unreachable when opening a job; entry saved under a different schema version; stale ObjectIds after a repository migration.","solutions":["Inspect the wrapped dbe.getMessage() for the underlying repository/database error.","Verify rows exist in r_jobentry_attribute for the given id_jobentry.","Re-save the job entry from Spoon to recreate attribute rows.","Check repository connectivity and re-open the job."],"exampleFix":"// before\nentry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n// after\ntry {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"FoldersCompare load failed for id_jobentry=\" + idJobEntry + \": \" + e.getMessage());\n}","handlingStrategy":"try-catch","validationCode":"if (idJobEntry == null || rep.getJobEntryAttributeString(idJobEntry, \"filename1\") == null) {\n  logBasic(\"FoldersCompare entry attributes missing; will re-save entry\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"Load failed for id_jobentry=\" + idJobEntry + \": \" + e.getMessage());\n  // recreate attribute rows via Spoon re-save\n}","preventionTips":["Check repository integrity after migrations.","Confirm attribute rows exist for entries loaded from older repositories.","Monitor DB health before opening jobs.","Keep repository backups for recovery."],"tags":["kettle","repository","job-entry","persistence"],"backgroundTag":"database-query-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"}