pentaho/pentaho-kettle · error · KettleException

Unable to load base job entry information from the…

Error message

Unable to load base job entry information from the repository for id_jobentry=id_jobentry

What it means

Loading the base job entry record (R_JOBENTRY) from the database repository hit a KettleDatabaseException, so the base attributes of the job entry could not be populated; it is rethrown as a KettleException including id_jobentry.

Solutions

  1. Check the wrapped KettleDatabaseException cause to identify the actual SQL/JDBC failure and fix the database issue
  2. Verify the R_JOBENTRY row for id_jobentry exists and R_JOBENTRY_TYPE has the referenced type row
  3. Re-save or re-import the job to rebuild orphaned entry rows
  4. Validate repository schema version matches your Kettle/PDI version

Example fix

// defensive load: surface cause and id
try {
  JobEntryCopy c = repository.jobEntryDelegate.loadJobEntryCopy(jobId, copyId, jobMeta);
} catch (KettleException e) {
  Throwable root = e; while (root.getCause() != null) root = root.getCause();
  throw new KettleException("Failed loading job entry (check R_JOBENTRY schema/data): " + root.getMessage(), e);
}
Defensive patterns

Strategy: try-catch

Validate before calling

null

Type guard

null

Try / catch

try { ... } catch (KettleException e) {
  Throwable root = e; while (root.getCause() != null) root = root.getCause();
  logError("Base job entry load failed for id=" + entryId + ": " + root.getMessage(), e);
}

Prevention

When it happens

Trigger: Called from loadJobEntryCopy; the SELECT on R_JOBENTRY (and related R_JOBENTRY_TYPE lookup) fails due to connection problems, missing table, or a corrupt row for id_jobentry.

Common situations: Repository schema partially migrated; R_JOBENTRY row deleted while R_JOBENTRY_COPY still references it plus a DB-level error; transient JDBC failure; wrong repository database.

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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/repository/kdr/delegates/KettleDatabaseRepositoryJobEntryDelegate.java:345

    return retval;
  }

  public void loadJobEntryBase( JobEntryBase jobEntryBase, ObjectId id_jobentry, List<DatabaseMeta> databases,
    List<SlaveServer> slaveServers ) throws KettleException {
    try {
      RowMetaAndData r = getJobEntry( id_jobentry );
      if ( r != null ) {
        jobEntryBase.setName( r.getString( "NAME", null ) );

        jobEntryBase.setDescription( r.getString( "DESCRIPTION", null ) );
        long id_jobentry_type = r.getInteger( "ID_JOBENTRY_TYPE", 0 );
        RowMetaAndData jetrow = getJobEntryType( new LongObjectId( id_jobentry_type ) );
        if ( jetrow != null ) {
          jobEntryBase.setPluginId( jetrow.getString( "CODE", null ) );
        }
      }
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( "Unable to load base job entry information from the repository for id_jobentry="
        + id_jobentry, dbe );
    }
  }

  private void saveAttributesMap( ObjectId jobId, ObjectId entryId, Map<String, Map<String, String>> attributesMap ) throws KettleException {
    for ( final Map.Entry<String, Map<String, String>> attributesEntry : attributesMap.entrySet() ) {
      Map<String, String> attributes = attributesEntry.getValue();
      String groupName = attributesEntry.getKey();
      for ( final Map.Entry<String, String> entry : attributes.entrySet() ) {
        final String value = entry.getValue();
        final String key = entry.getKey();
        if ( key != null && value != null ) {
          repository.connectionDelegate.insertJobEntryAttribute( jobId, entryId, 0, JOBENTRY_ATTRIBUTE_PREFIX
            + groupName + '\t' + value, 0, value );
        }
      }
    }
  }

View on GitHub (pinned to f3058517a1)