pentaho/pentaho-kettle · error · KettleException
JobEntryDeleteFolders.UnableToLoadFromRepo
Error message
JobEntryDeleteFolders.UnableToLoadFromRepo
What it means
Thrown when reading the 'Delete Folders' job entry's stored folder arguments back from the repository fails. loadRep() wraps any KettleException from rep.getJobEntryAttributeString() into this message, including the job entry id. It means the metadata could not be loaded from the database.
Solutions
- Check the chained KettleDatabaseException for the real SQL error and fix connectivity/permissions
- Run repository upgrade scripts to align r_jobentry_attribute with your Kettle version
- Verify the id_jobentry exists; re-save the job from Spoon to rebuild its attributes
- Retry the load once the database is healthy
Example fix
// before
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers); // throws on repo failure
// after
try {
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
logError("Load failed for entry id " + idJobEntry + ": " + e.getCause());
throw e;
} Defensive patterns
Strategy: try-catch
Validate before calling
// before loadRep: check repository reachability
if (rep instanceof KettleDatabaseRepository
&& !((KettleDatabaseRepository) rep).isConnected()) {
throw new IllegalStateException("Repository not connected; cannot load entry " + idJobEntry);
} Try / catch
try {
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
logError("Load failed for entry " + idJobEntry + ", cause: " + e.getCause());
throw e;
} Prevention
- Ping the repository DB before long metadata loads
- Run repository upgrade scripts after Pentaho upgrades
- Grant repository user SELECT on r_jobentry_attribute
- Log chained causes to distinguish connectivity vs schema issues
When it happens
Trigger: Calling loadRep() (during job load from a database repository) when the SELECT of 'name' attributes for the entry fails: connection lost, table missing, or a generic repository error mid-load.
Common situations: Repository schema out of date after Pentaho upgrade; DB connection reset during load; orphaned job entry rows whose attributes cannot be resolved; wrong id_jobentry passed manually.
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
- JobDosToUnix.Error.Exception.UnableLoadRep
- JobDosToUnix.Error.Exception.UnableSaveRep
- JobEntryDeleteFiles.UnableToSaveToRepo
- JobEntryDeleteFolders.UnableToSaveToRepo
- JobEntryDeleteResultFilenames.CanNotLoadFromRep
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/9be8c294e1e264df.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/deletefolders/JobEntryDeleteFolders.java:172
}
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
argFromPrevious = rep.getJobEntryAttributeBoolean( id_jobentry, "arg_from_previous" );
limit_folders = rep.getJobEntryAttributeString( id_jobentry, "limit_folders" );
success_condition = rep.getJobEntryAttributeString( id_jobentry, "success_condition" );
// 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, "JobEntryDeleteFolders.UnableToLoadFromRepo", String
.valueOf( id_jobentry ) ), dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "arg_from_previous", argFromPrevious );
rep.saveJobEntryAttribute( id_job, getObjectId(), "limit_folders", limit_folders );
rep.saveJobEntryAttribute( id_job, getObjectId(), "success_condition", success_condition );
// 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, "JobEntryDeleteFolders.UnableToSaveToRepo", StringView on GitHub (pinned to f3058517a1)