pentaho/pentaho-kettle · error · KettleException

JobFoldersCompare.Meta.UnableLoadRep

Error message

JobFoldersCompare.Meta.UnableLoadRep

What it means

Thrown by JobEntryFoldersCompare.loadRep when reading the entry's attributes (compareonly, wildcard, filename1, filename2) from the repository fails with a KettleException. The message is a localized bundle key formatted with the id_jobentry and the cause's message. It means the 'Compare Folders' entry could not be hydrated from the repository.

Solutions

  1. Inspect the wrapped dbe.getMessage() for the underlying repository/database error.
  2. Verify rows exist in r_jobentry_attribute for the given id_jobentry.
  3. Re-save the job entry from Spoon to recreate attribute rows.
  4. Check repository connectivity and re-open the job.

Example fix

// before
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
// after
try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logError("FoldersCompare load failed for id_jobentry=" + idJobEntry + ": " + e.getMessage());
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (idJobEntry == null || rep.getJobEntryAttributeString(idJobEntry, "filename1") == null) {
  logBasic("FoldersCompare entry attributes missing; will re-save entry");
}

Try / catch

try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logError("Load failed for id_jobentry=" + idJobEntry + ": " + e.getMessage());
  // recreate attribute rows via Spoon re-save
}

Prevention

When it happens

Trigger: Calling loadRep on JobEntryFoldersCompare when rep.getJobEntryAttributeString throws KettleException — repository DB error, missing r_jobentry_attribute rows for id_jobentry, or connection failure.

Common situations: Corrupt or partially deleted repository rows; repository unreachable when opening a job; entry saved under a different schema version; stale ObjectIds after a repository migration.

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/0fdaadfb9bb1696a. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/folderscompare/JobEntryFoldersCompare.java:155

    } catch ( KettleXMLException xe ) {
      throw new KettleXMLException( BaseMessages.getString( PKG, "JobFoldersCompare.Meta.UnableLoadXML", xe
        .getMessage() ) );
    }
  }

  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
    List<SlaveServer> slaveServers ) throws KettleException {
    try {
      includesubfolders = rep.getJobEntryAttributeBoolean( id_jobentry, "include_subfolders" );
      comparefilecontent = rep.getJobEntryAttributeBoolean( id_jobentry, "compare_filecontent" );
      comparefilesize = rep.getJobEntryAttributeBoolean( id_jobentry, "compare_filesize" );

      compareonly = rep.getJobEntryAttributeString( id_jobentry, "compareonly" );
      wildcard = rep.getJobEntryAttributeString( id_jobentry, "wildcard" );
      filename1 = rep.getJobEntryAttributeString( id_jobentry, "filename1" );
      filename2 = rep.getJobEntryAttributeString( id_jobentry, "filename2" );
    } catch ( KettleException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG, "JobFoldersCompare.Meta.UnableLoadRep", ""
        + id_jobentry, dbe.getMessage() ) );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "include_subfolders", includesubfolders );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "compare_filecontent", comparefilecontent );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "compare_filesize", comparefilesize );

      rep.saveJobEntryAttribute( id_job, getObjectId(), "compareonly", compareonly );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "wildcard", wildcard );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "filename1", filename1 );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "filename2", filename2 );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "JobFoldersCompare.Meta.UnableSaveRep", "" + id_job, dbe.getMessage() ) );
    }

View on GitHub (pinned to f3058517a1)