pentaho/pentaho-kettle · error · KettleException
ERROR_0002_Unable_To_Load_Job_From_Repository
ERROR_0002_Unable_To_Load_Job_From_Repository
Error message
JobEntryFileCompare.ERROR_0002_Unable_To_Load_Job_From_Repository
What it means
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.
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
Defensive patterns
Strategy: retry
Validate before calling
// Verify repository connectivity before loading
if (!rep.connect()) { throw new IllegalStateException("repository unavailable"); } Try / catch
try {
jobEntry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);
} catch (KettleException e) {
logError("Repository load failed for entry " + id_jobentry + ": " + e.getMessage(), e);
// reconnect and retry, or fall back to XML load
} Prevention
- 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
When it happens
Trigger: 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.
Common situations: Broken or stale repository database connection; repository schema version mismatch after a Kettle upgrade; manually deleted attribute rows.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- ERROR_0002_Cannot_Load_Job_From_Repository
- ERROR_0002_Cannot_Load_Job_From_Repository
- JobEntryAbort.UnableToLoadFromRepo.Label
- JobEntryAbort.UnableToSaveToRepo.Label
- JobEntryAddResultFilenames.UnableToLoadFromRepo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/5c103e0b6ba8254f.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/filecompare/JobEntryFileCompare.java:120
try {
super.loadXML( entrynode, databases, slaveServers );
filename1 = XMLHandler.getTagValue( entrynode, "filename1" );
filename2 = XMLHandler.getTagValue( entrynode, "filename2" );
addFilenameToResult = "Y".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, "add_filename_result" ) );
} catch ( KettleXMLException xe ) {
throw new KettleXMLException( BaseMessages.getString(
PKG, "JobEntryFileCompare.ERROR_0001_Unable_To_Load_From_Xml_Node" ), xe );
}
}
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
filename1 = rep.getJobEntryAttributeString( id_jobentry, "filename1" );
filename2 = rep.getJobEntryAttributeString( id_jobentry, "filename2" );
addFilenameToResult = rep.getJobEntryAttributeBoolean( id_jobentry, "add_filename_result" );
} catch ( KettleException dbe ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobEntryFileCompare.ERROR_0002_Unable_To_Load_Job_From_Repository", id_jobentry ), dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "filename1", filename1 );
rep.saveJobEntryAttribute( id_job, getObjectId(), "filename2", filename2 );
rep.saveJobEntryAttribute( id_job, getObjectId(), "add_filename_result", addFilenameToResult );
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobEntryFileCompare.ERROR_0003_Unable_To_Save_Job", id_job ), dbe );
}
}
public String getRealFilename1() {
return environmentSubstitute( getFilename1() );
}View on GitHub (pinned to f3058517a1)