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

  1. Check the chained KettleDatabaseException for the real SQL error and fix connectivity/permissions
  2. Run repository upgrade scripts to align r_jobentry_attribute with your Kettle version
  3. Verify the id_jobentry exists; re-save the job from Spoon to rebuild its attributes
  4. 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

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


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", String

View on GitHub (pinned to f3058517a1)