pentaho/pentaho-kettle · error · KettleException

JobEntrySimple.Error.Exception.UnableLoadRep

JobEntrySimple.Error.Exception.UnableLoadRep

Error message

JobEntrySimple.Error.Exception.UnableLoadRep

What it means

JobEntrySimpleEval.loadRep wraps any KettleException raised while reading the job entry's attributes ('fieldname', 'successnumbercondition', 'successbooleancondition', 'successwhenvarset', etc.) from the repository and rethrows it as a KettleException with the UnableLoadRep message plus the id_jobentry. It indicates the persisted metadata for this 'simple evaluation' job entry could not be read from the repository database.

Solutions

  1. Verify the repository database connection (test connection, credentials, network) and retry opening the job.
  2. Check that the job and job entry rows (id_jobentry) exist and are intact in the repository tables (R_JOBENTRY, R_JOBENTRY_ATTRIBUTE).
  3. Re-save/recreate the job entry in Spoon to rewrite its repository attributes.
  4. Inspect the chained cause (dbe) for the underlying SQL error and fix the schema/driver mismatch.

Example fix

// before
JobEntrySimpleEval entry = new JobEntrySimpleEval();
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers); // throws if repo read fails
// after
try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logError("Failed to load JobEntrySimpleEval id=" + idJobEntry + ": " + e.getCause(), e);
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (!rep.connect().equals(...)) { /* test repository connectivity before load */ }

Try / catch

try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logger.error("JobEntrySimpleEval load failed for id=" + idJobEntry, e);
  // fall back to defaults or abort job load
}

Prevention

When it happens

Trigger: Calling loadRep on a JobEntrySimpleEval when Repository.getJobEntryAttributeString/getJobEntryAttributeBoolean throws KettleException - typically a broken repository DB connection, missing table rows, or a corrupt/locked repository.

Common situations: Repository database is down or credentials changed while opening a job; the job entry row was deleted or corrupted; schema mismatch after a Pentaho version upgrade; network interruption mid-load.

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/838b253e497fed3c. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/simpleeval/JobEntrySimpleEval.java:390

      fieldname = rep.getJobEntryAttributeString( id_jobentry, "fieldname" );
      variablename = rep.getJobEntryAttributeString( id_jobentry, "variablename" );
      fieldtype = getFieldTypeByCode( Const.NVL( rep.getJobEntryAttributeString( id_jobentry, "fieldtype" ), "" ) );
      mask = rep.getJobEntryAttributeString( id_jobentry, "mask" );
      comparevalue = rep.getJobEntryAttributeString( id_jobentry, "comparevalue" );
      minvalue = rep.getJobEntryAttributeString( id_jobentry, "minvalue" );
      maxvalue = rep.getJobEntryAttributeString( id_jobentry, "maxvalue" );
      successcondition =
        getSuccessConditionByCode( Const.NVL(
          rep.getJobEntryAttributeString( id_jobentry, "successcondition" ), "" ) );
      successnumbercondition =
        getSuccessNumberConditionByCode( Const.NVL( rep.getJobEntryAttributeString(
          id_jobentry, "successnumbercondition" ), "" ) );
      successbooleancondition =
        getSuccessBooleanConditionByCode( Const.NVL( rep.getJobEntryAttributeString(
          id_jobentry, "successbooleancondition" ), "" ) );
      successwhenvarset = rep.getJobEntryAttributeBoolean( id_jobentry, "successwhenvarset" );
    } catch ( KettleException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG, "JobEntrySimple.Error.Exception.UnableLoadRep" )
        + id_jobentry, dbe );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "valuetype", getValueTypeCode( valuetype ) );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "fieldname", fieldname );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "variablename", variablename );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "fieldtype", getFieldTypeCode( fieldtype ) );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "mask", mask );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "comparevalue", comparevalue );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "minvalue", minvalue );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "maxvalue", maxvalue );
      rep.saveJobEntryAttribute(
        id_job, getObjectId(), "successcondition", getSuccessConditionCode( successcondition ) );
      rep

View on GitHub (pinned to f3058517a1)