pentaho/pentaho-kettle · error · KettleException
JobEvalFilesMetrics.Error.Exception.UnableLoadRep
Error message
JobEvalFilesMetrics.Error.Exception.UnableLoadRep
What it means
JobEntryEvalFilesMetrics.loadRep() loads this entry's attributes (evaluation_type, scale, source_files, etc.) from the repository; any KettleException from the repository calls is rethrown as a KettleException with localized message 'JobEvalFilesMetrics.Error.Exception.UnableLoadRep' concatenated with the job entry id. It means the stored configuration for this entry could not be read from the repository.
Solutions
- Check the chained cause for the JDBC/database error details.
- Verify r_jobentry_attribute contains rows for the printed id_jobentry; re-save the entry to recreate them.
- Test and repair the repository connection; run repository upgrade scripts if the schema is outdated.
- Reload the job after restoring DB connectivity.
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) {
logError("Repo load of EvalFilesMetrics failed for entry " + e.getMessage(), e);
throw e;
} Prevention
- Monitor repository DB availability and credentials.
- Run repository upgrade scripts when upgrading Pentaho.
- Re-save entries after failed/partial migrations to rebuild attributes.
- Check r_jobentry_attribute rows exist for entries that fail to load.
When it happens
Trigger: Loading a job from a repository where rep.getJobEntryAttributeString(...) for fields like 'evaluation_type' or 'scale' throws KettleDatabaseException (wrapped as KettleException).
Common situations: Missing rows in r_jobentry_attribute for the entry; repository DB connectivity problems; schema version mismatch; partial save left the entry's attributes incomplete.
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/2e329c857878dea1.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/evalfilesmetrics/JobEntryEvalFilesMetrics.java:305
ResultFieldFile = rep.getJobEntryAttributeString( id_jobentry, "result_field_file" );
ResultFieldWildcard = rep.getJobEntryAttributeString( id_jobentry, "result_field_wild" );
ResultFieldIncludesubFolders =
rep.getJobEntryAttributeString( id_jobentry, "result_field_includesubfolders" );
comparevalue = rep.getJobEntryAttributeString( id_jobentry, "comparevalue" );
minvalue = rep.getJobEntryAttributeString( id_jobentry, "minvalue" );
maxvalue = rep.getJobEntryAttributeString( id_jobentry, "maxvalue" );
successConditionType =
JobEntrySimpleEval.getSuccessNumberConditionByCode( Const.NVL( rep.getJobEntryAttributeString(
id_jobentry, "successnumbercondition" ), "" ) );
sourceFiles =
getSourceFilesByCode( Const.NVL( rep.getJobEntryAttributeString( id_jobentry, "source_files" ), "" ) );
evaluationType =
getEvaluationTypeByCode( Const
.NVL( rep.getJobEntryAttributeString( id_jobentry, "evaluation_type" ), "" ) );
scale = getScaleByCode( Const.NVL( rep.getJobEntryAttributeString( id_jobentry, "scale" ), "" ) );
} catch ( KettleException dbe ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEvalFilesMetrics.Error.Exception.UnableLoadRep" )
+ id_jobentry, dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
// save the arguments...
if ( sourceFileFolder != null ) {
for ( int i = 0; i < sourceFileFolder.length; i++ ) {
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "source_filefolder", sourceFileFolder[i] );
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "wildcard", sourceWildcard[i] );
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "include_subFolders", sourceIncludeSubfolders[i] );
}
}
rep.saveJobEntryAttribute( id_job, getObjectId(), "result_filenames_wildcard", resultFilenamesWildcard );
rep.saveJobEntryAttribute( id_job, getObjectId(), "result_field_file", ResultFieldFile );View on GitHub (pinned to f3058517a1)