pentaho/pentaho-kettle · error · KettleException
ERROR_0002_Cannot_Load_Job_From_Repository
ERROR_0002_Cannot_Load_Job_From_Repository
Error message
JobEntryFilesExist.ERROR_0002_Cannot_Load_Job_From_Repository
What it means
Thrown by JobEntryFilesExist.loadRep when reading the entry's argument (filename) attributes from the repository fails. It wraps the KettleException with a localized message including the id_jobentry and dbe.getMessage(), but does not chain the cause. It means repository attribute reads for this entry failed.
Solutions
- Verify repository connectivity and retry the load
- Check r_jobentry_attribute rows with attr_nr indexes exist for this id_jobentry
- Apply repository schema upgrade scripts if versions differ
- Re-save the entry from Spoon to rebuild its attribute rows
Defensive patterns
Strategy: retry
Validate before calling
// Check argument rows exist before loading
int argnr = rep.countNumJobEntryAttributes(id_jobentry);
if (argnr <= 0) { throw new IllegalStateException("no argument rows for entry " + id_jobentry); } Try / catch
try {
jobEntry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);
} catch (KettleException e) {
logError("Repository load failed: " + e.getMessage());
// reconnect and retry; cause is not chained, use getMessage()
} Prevention
- Re-save entries after repository upgrades
- Avoid partial saves/interruptions mid-save
- Monitor repository DB health
- Back up repository before manual row edits
When it happens
Trigger: Loading from a database repository when getJobEntryAttributeString(id_jobentry, a, "name") or the argument-count read throws — missing rows, connection failure, repository error.
Common situations: Repository upgrade mismatch; partial save left some 'name' attribute rows missing; transient DB outage while opening a job.
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_Unable_To_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/1d9c9f3040a0f430.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/filesexist/JobEntryFilesExist.java:143
PKG, "JobEntryFilesExist.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node", xe.getMessage() ) );
}
}
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
filename = rep.getJobEntryAttributeString( id_jobentry, "filename" );
// How many arguments?
int argnr = rep.countNrJobEntryAttributes( id_jobentry, "name" );
allocate( argnr );
// Read them all...
for ( int a = 0; a < argnr; a++ ) {
arguments[a] = rep.getJobEntryAttributeString( id_jobentry, a, "name" );
}
} catch ( KettleException dbe ) {
throw new KettleException( BaseMessages
.getString( PKG, "JobEntryFilesExist.ERROR_0002_Cannot_Load_Job_From_Repository", "" + id_jobentry, dbe
.getMessage() ) );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "filename", filename );
// save the arguments...
if ( arguments != null ) {
for ( int i = 0; i < arguments.length; i++ ) {
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "name", arguments[i] );
}
}
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobEntryFilesExist.ERROR_0003_Cannot_Save_Job_Entry", "" + id_job, dbe.getMessage() ) );View on GitHub (pinned to f3058517a1)