pentaho/pentaho-kettle · error · KettleException
JobEntryEvalTableContent.UnableLoadRep
Error message
JobEntryEvalTableContent.UnableLoadRep
What it means
JobEntryEvalTableContent.loadRep() reads this entry's boolean/string attributes (is_usevars, add_rows_result, clear_result_rows, custom_sql) from the repository; a KettleDatabaseException is rethrown as a KettleException with localized message 'JobEntryEvalTableContent.UnableLoadRep' plus the entry id. The entry's stored settings could not be loaded from the repository database.
Solutions
- Check the chained KettleDatabaseException for the JDBC error.
- Confirm rows exist in r_jobentry_attribute for the reported id; re-save the entry to recreate them.
- Test the repository connection and run schema upgrade if versions differ.
- Reload the job once the database is reachable.
Defensive patterns
Strategy: try-catch
Validate before calling
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("Repo load of EvalTableContent failed: " + e.getMessage(), e);
}
throw e;
} Prevention
- Test repository connectivity and credentials before loading jobs.
- Keep repository schema migrated to the client version.
- Detect and rebuild missing r_jobentry_attribute rows after partial saves.
- Use retries for transient DB failures.
When it happens
Trigger: Loading a job from a repository where rep.getJobEntryAttributeBoolean/String(id_jobentry, ...) throws KettleDatabaseException.
Common situations: Repository DB unreachable or credentials wrong; missing attribute rows after partial save/migration; schema mismatch between client and repository.
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
- JobEntryEval.UnableToLoadFromRepo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d13dfb0c105e4149.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/evaluatetablecontent/JobEntryEvalTableContent.java:233
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
connection = rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, "connection", "id_database", databases );
schemaname = rep.getJobEntryAttributeString( id_jobentry, "schemaname" );
tablename = rep.getJobEntryAttributeString( id_jobentry, "tablename" );
successCondition =
getSuccessConditionByCode( Const.NVL(
rep.getJobEntryAttributeString( id_jobentry, "success_condition" ), "" ) );
limit = rep.getJobEntryAttributeString( id_jobentry, "limit" );
useCustomSQL = rep.getJobEntryAttributeBoolean( id_jobentry, "is_custom_sql" );
useVars = rep.getJobEntryAttributeBoolean( id_jobentry, "is_usevars" );
addRowsResult = rep.getJobEntryAttributeBoolean( id_jobentry, "add_rows_result" );
clearResultList = rep.getJobEntryAttributeBoolean( id_jobentry, "clear_result_rows" );
customSQL = rep.getJobEntryAttributeString( id_jobentry, "custom_sql" );
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEntryEvalTableContent.UnableLoadRep", ""
+ id_jobentry ), dbe );
}
}
private static int getSuccessConditionByCode( String tt ) {
if ( tt == null ) {
return 0;
}
for ( int i = 0; i < successConditionsCode.length; i++ ) {
if ( successConditionsCode[i].equalsIgnoreCase( tt ) ) {
return i;
}
}
return 0;
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {View on GitHub (pinned to f3058517a1)