{"record":{"id":"5c103e0b6ba8254f","repo":"pentaho/pentaho-kettle","slug":"error-0002-unable-to-load-job-from-repository","errorCode":"ERROR_0002_Unable_To_Load_Job_From_Repository","errorMessage":"JobEntryFileCompare.ERROR_0002_Unable_To_Load_Job_From_Repository","messagePattern":"JobEntryFileCompare\\.ERROR_0002_Unable_To_Load_Job_From_Repository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/filecompare/JobEntryFileCompare.java","lineNumber":120,"sourceCode":"    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      filename1 = XMLHandler.getTagValue( entrynode, \"filename1\" );\n      filename2 = XMLHandler.getTagValue( entrynode, \"filename2\" );\n      addFilenameToResult = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"add_filename_result\" ) );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryFileCompare.ERROR_0001_Unable_To_Load_From_Xml_Node\" ), xe );\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      filename1 = rep.getJobEntryAttributeString( id_jobentry, \"filename1\" );\n      filename2 = rep.getJobEntryAttributeString( id_jobentry, \"filename2\" );\n      addFilenameToResult = rep.getJobEntryAttributeBoolean( id_jobentry, \"add_filename_result\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"JobEntryFileCompare.ERROR_0002_Unable_To_Load_Job_From_Repository\", id_jobentry ), dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"filename1\", filename1 );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"filename2\", filename2 );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"add_filename_result\", addFilenameToResult );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"JobEntryFileCompare.ERROR_0003_Unable_To_Save_Job\", id_job ), dbe );\n    }\n  }\n\n  public String getRealFilename1() {\n    return environmentSubstitute( getFilename1() );\n  }","sourceCodeStart":102,"sourceCodeEnd":138,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/filecompare/JobEntryFileCompare.java#L102-L138","documentation":"Thrown by JobEntryFileCompare.loadRep when reading this job entry's attributes (filename1, filename2, add_filename_result) from a repository fails. The original KettleException is wrapped with a localized message including the job entry ObjectId. It signals a repository-level problem, not a file problem.","triggerScenarios":"Loading a job from a database repository where r_jobentry_attribute rows for this entry are missing/corrupt, the repository connection drops mid-load, or getJobEntryAttributeString/Boolean throws.","commonSituations":"Broken or stale repository database connection; repository schema version mismatch after a Kettle upgrade; manually deleted attribute rows.","solutions":["Verify the repository database connection is healthy and retry loading the job","Check r_jobentry_attribute rows exist for id_jobentry and contain filename1/filename2/add_filename_result","Run the Kettle repository upgrade scripts if versions differ","Re-save the job entry from Spoon to regenerate the attribute rows"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// Verify repository connectivity before loading\nif (!rep.connect()) { throw new IllegalStateException(\"repository unavailable\"); }","typeGuard":null,"tryCatchPattern":"try {\n    jobEntry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);\n} catch (KettleException e) {\n    logError(\"Repository load failed for entry \" + id_jobentry + \": \" + e.getMessage(), e);\n    // reconnect and retry, or fall back to XML load\n}","preventionTips":["Use a connection pool / validate connections before loading","Run repository upgrade scripts after Kettle upgrades","Back up r_jobentry_attribute before manual DB maintenance","Avoid deleting repository rows by hand"],"tags":["repository","database","job-entry"],"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"}