pentaho/pentaho-kettle · error · KettleException

JobEntryEval.UnableToLoadFromRepo

Error message

JobEntryEval.UnableToLoadFromRepo

What it means

JobEntryEval.loadRep() reads the 'script' attribute for this job entry from the Kettle repository; a KettleDatabaseException is rethrown as a KettleException with localized message 'JobEntryEval.UnableToLoadFromRepo' plus the job entry id. It means the Eval job entry's stored definition could not be loaded from the repository database.

Solutions

  1. Check the cause KettleDatabaseException for the JDBC error (connectivity, credentials, lock).
  2. Verify the job entry row exists in r_jobentry_attribute for the reported id_jobentry.
  3. Test the repository connection in Spoon and repair/upgrade the repository schema if versions differ.
  4. Re-save the job entry from a working client to recreate missing attributes.
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify repository connectivity before loading
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) {
  if (e.getCause() instanceof KettleDatabaseException) {
    logError("Repository DB failure loading Eval entry " + e.getMessage(), e);
  }
  throw e;
}

Prevention

When it happens

Trigger: Loading a job from a repository (loadJobFromRepository) where rep.getJobEntryAttributeString(id_jobentry, "script") throws KettleDatabaseException, e.g. the r_jobentry_attribute row is missing or the DB is unreachable.

Common situations: Repository database down or network blip; missing rows in r_jobentry_attribute after a failed migration; wrong repository credentials; repository schema version mismatch between client and server.

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/54b76a06b0114888. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/eval/JobEntryEval.java:94

    return retval.toString();
  }

  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,
    Repository rep, IMetaStore metaStore ) throws KettleXMLException {
    try {
      super.loadXML( entrynode, databases, slaveServers );
      script = XMLHandler.getTagValue( entrynode, "script" );
    } catch ( Exception e ) {
      throw new KettleXMLException( BaseMessages.getString( PKG, "JobEntryEval.UnableToLoadFromXml" ), e );
    }
  }

  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
    List<SlaveServer> slaveServers ) throws KettleException {
    try {
      script = rep.getJobEntryAttributeString( id_jobentry, "script" );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG, "JobEntryEval.UnableToLoadFromRepo", String
        .valueOf( id_jobentry ) ), dbe );
    }
  }

  // Save the attributes of this job entry
  //
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "script", script );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG, "JobEntryEval.UnableToSaveToRepo", String
        .valueOf( id_job ) ), dbe );
    }
  }

  public void setScript( String s ) {
    script = s;
  }

View on GitHub (pinned to f3058517a1)