pentaho/pentaho-kettle · error · KettleException

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

Error message

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

What it means

Thrown by JobEntryHTTP.saveRep when saving the entry's attributes — including indexed header name/value rows — fails with a KettleDatabaseException. Note the message wording says 'load' but this is the save path (another copy-paste bug). The idJob is appended and the cause chained. It means the 'HTTP' job entry state could not be persisted.

Solutions

  1. Check the chained KettleDatabaseException for the root SQL error and fix the repository DB problem.
  2. Verify write permissions and available storage on the repository.
  3. Retry the save after restoring the connection; or export the job to XML as a workaround.
  4. Reduce concurrent edits/saves to the same job to avoid lock contention.

Example fix

// before
entry.saveRep(rep, metaStore, idJob);
// after
try {
  entry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
  logError("HTTP entry save failed for idJob=" + idJob + ": " + e.getCause().getMessage());
}
Defensive patterns

Strategy: try-catch

Validate before calling

// confirm repository connection before saving
if (rep == null || !rep.isConnected()) {
  throw new KettleException("Repository disconnected; cannot save HTTP entry");
}

Try / catch

try {
  entry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
  logError("HTTP entry save failed: " + e.getCause().getMessage());
  // retry after reconnecting or export to XML
}

Prevention

When it happens

Trigger: Calling saveRep on JobEntryHTTP when rep.saveJobEntryAttribute (including per-header indexed saves) throws KettleDatabaseException — repository DB down, constraint violation, read-only repository, or failed transaction during job save.

Common situations: Repository connection lost while saving a large job with many headers; DB storage limits hit; permission errors on r_jobentry_attribute; concurrent saves causing lock timeouts.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/e36ee78c9c96689e. Report an issue: GitHub.

Appendix: source

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

      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_DEST_FIELDNAME, destinationFieldname );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_RUN_EVERY_ROW, runForEveryRow );

      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_USERNAME, username );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_PASSWORD, Encr
        .encryptPasswordIfNotUsingVariables( password ) );

      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_PROXY_HOST, proxyHostname );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_PROXY_PORT, proxyPort );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_NON_PROXY_HOSTS, nonProxyHosts );
      rep.saveJobEntryAttribute( idJob, getObjectId(), TAG_ADD_FILENAME_RESULT, addfilenameresult );
      if ( headerName != null ) {
        for ( int i = 0; i < headerName.length; i++ ) {
          rep.saveJobEntryAttribute( idJob, getObjectId(), i, TAG_HEADER_NAME, headerName[ i ] );
          rep.saveJobEntryAttribute( idJob, getObjectId(), i, TAG_HEADER_VALUE, headerValue[ i ] );
        }
      }
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException(
        "Unable to load job entry of type 'HTTP' to the repository for idJob=" + idJob, dbe );
    }
  }

  /**
   * @return Returns the URL.
   */
  public String getUrl() {
    return url;
  }

  /**
   * @param url The URL to set.
   */
  public void setUrl( String url ) {
    this.url = url;
  }

View on GitHub (pinned to f3058517a1)