pentaho/pentaho-kettle · error · KettleException
JobEntryEval.UnableToLoadFromRepo
Error message
JobEntryEval.UnableToLoadFromRepo
What it means
JobEntryEval.loadRep() reads the 'script' attribute for this job entry from the Kettle repository; a KettleDatabaseException is rethrown as a KettleException with localized message 'JobEntryEval.UnableToLoadFromRepo' plus the job entry id. It means the Eval job entry's stored definition could not be loaded from the repository database.
Solutions
- Check the cause KettleDatabaseException for the JDBC error (connectivity, credentials, lock).
- Verify the job entry row exists in r_jobentry_attribute for the reported id_jobentry.
- Test the repository connection in Spoon and repair/upgrade the repository schema if versions differ.
- Re-save the job entry from a working client to recreate missing attributes.
Defensive patterns
Strategy: try-catch
Validate before calling
// Verify repository connectivity before loading
if (!rep.connect()) {
throw new IllegalStateException("Repository not reachable: " + rep.getName());
} Try / catch
try {
JobMeta meta = rep.loadJob(jobName, jobDir, null, null);
} catch (KettleException e) {
if (e.getCause() instanceof KettleDatabaseException) {
logError("Repository DB failure loading Eval entry " + e.getMessage(), e);
}
throw e;
} Prevention
- Test repository connections before running loads.
- Keep repository schema versions in sync with clients via upgrade scripts.
- Back up r_jobentry_attribute and monitor for missing rows after migrations.
- Use connection pooling/health checks to avoid transient DB drops.
When it happens
Trigger: Loading a job from a repository (loadJobFromRepository) where rep.getJobEntryAttributeString(id_jobentry, "script") throws KettleDatabaseException, e.g. the r_jobentry_attribute row is missing or the DB is unreachable.
Common situations: Repository database down or network blip; missing rows in r_jobentry_attribute after a failed migration; wrong repository credentials; repository schema version mismatch between client and server.
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
- JobEntryCheckFilesLocked.UnableToLoadFromRepo
- JobEntryCheckFilesLocked.UnableToSaveToRepo
- JobEntryColumnsExist.Meta.UnableLoadRep
- JobEntryColumnsExist.Meta.UnableSaveRep
- JobEntryEvalTableContent.UnableLoadRep
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/54b76a06b0114888.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/eval/JobEntryEval.java:94
return retval.toString();
}
public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,
Repository rep, IMetaStore metaStore ) throws KettleXMLException {
try {
super.loadXML( entrynode, databases, slaveServers );
script = XMLHandler.getTagValue( entrynode, "script" );
} catch ( Exception e ) {
throw new KettleXMLException( BaseMessages.getString( PKG, "JobEntryEval.UnableToLoadFromXml" ), e );
}
}
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
script = rep.getJobEntryAttributeString( id_jobentry, "script" );
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEntryEval.UnableToLoadFromRepo", String
.valueOf( id_jobentry ) ), dbe );
}
}
// Save the attributes of this job entry
//
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "script", script );
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEntryEval.UnableToSaveToRepo", String
.valueOf( id_job ) ), dbe );
}
}
public void setScript( String s ) {
script = s;
}View on GitHub (pinned to f3058517a1)