pentaho/pentaho-kettle · error · KettleException

Unable to load job entry of type 'HTTP' from the repository…

Error message

Unable to load job entry of type 'HTTP' from the repository for idJobEntry=

What it means

Thrown by JobEntryHTTP.loadRep when loading the entry's attributes, including per-row header name/value pairs, from the repository fails with a KettleException. The idJobEntry is appended to the message and the cause chained. It means the 'HTTP' job entry could not be hydrated from the repository.

Solutions

  1. Examine the chained cause for the underlying repository/database error and fix it.
  2. Verify r_jobentry_attribute rows exist for idJobEntry, including the header rows and their count attribute.
  3. Re-save the HTTP entry in Spoon to regenerate attribute rows.
  4. Restore repository connectivity and retry opening 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("HTTP entry load failed for idJobEntry=" + idJobEntry + ": " + e.getCause(), e);
}
Defensive patterns

Strategy: try-catch

Validate before calling

String url = rep.getJobEntryAttributeString(idJobEntry, "url");
if (url == null) logBasic("HTTP entry missing url attribute; rows may be corrupt");

Try / catch

try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logError("HTTP entry repository load failed: " + e.getCause());
  // restore DB or re-save the entry
}

Prevention

When it happens

Trigger: Calling loadRep on JobEntryHTTP when rep.getJobEntryAttributeString (including indexed reads for header rows via getJobEntryAttributeString(idJobEntry, a, TAG_HEADER_NAME/VALUE)) throws KettleException — DB error, missing attribute rows, or connection loss.

Common situations: Repository database unavailable while opening a job; attribute rows for the header counter (nr) missing or inconsistent; repository migration leaving orphaned entries.

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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/http/JobEntryHTTP.java:313

      password =
        Encr.decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( idJobEntry, TAG_PASSWORD ) );

      proxyHostname = rep.getJobEntryAttributeString( idJobEntry, TAG_PROXY_HOST );
      proxyPort = rep.getJobEntryAttributeString( idJobEntry, TAG_PROXY_PORT ); // backward compatible.

      nonProxyHosts = rep.getJobEntryAttributeString( idJobEntry, TAG_NON_PROXY_HOSTS );
      addfilenameresult = rep.getJobEntryAttributeBoolean( idJobEntry, TAG_ADD_FILENAME_RESULT );

      // How many headerName?
      int argnr = rep.countNrJobEntryAttributes( idJobEntry, TAG_HEADER_NAME );
      allocate( argnr );

      for ( int a = 0; a < argnr; a++ ) {
        headerName[ a ] = rep.getJobEntryAttributeString( idJobEntry, a, TAG_HEADER_NAME );
        headerValue[ a ] = rep.getJobEntryAttributeString( idJobEntry, a, TAG_HEADER_VALUE );
      }
    } catch ( KettleException dbe ) {
      throw new KettleException( "Unable to load job entry of type 'HTTP' from the repository for idJobEntry="
        + idJobEntry, dbe );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId idJob ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_URL, url );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_TARGET_FILENAME, targetFilename );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_FILE_APPENDED, fileAppended );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_DATE_TIME_ADDED, dateTimeAdded );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_TARGET_FILENAME_EXTENSION, targetFilenameExtension );

      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_UPLOAD_FILENAME, uploadFilename );

      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_URL_FIELDNAME, urlFieldname );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_UPLOAD_FIELDNAME, uploadFieldname );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_DEST_FIELDNAME, destinationFieldname );

View on GitHub (pinned to f3058517a1)