pentaho/pentaho-kettle · error · KettleException

Unable to save job entry of type 'SendNagiosPassiveCheck'…

Error message

Unable to save job entry of type 'SendNagiosPassiveCheck' to the repository for id_job=

What it means

This KettleException wraps a KettleDatabaseException thrown while persisting the SendNagiosPassiveCheck job entry attributes (message, encryptionMode, level) to the repository in saveRep. It means the repository write for this job entry failed; the original database exception is preserved as the cause. It is thrown to identify exactly which job entry type and job id failed to save.

Solutions

  1. Inspect the wrapped KettleDatabaseException cause and fix the underlying DB issue (connectivity, locks, permissions)
  2. Verify the repository user has INSERT/UPDATE rights on R_JOBENTRY_ATTRIBUTE
  3. Ensure the job entry has a valid ObjectId (it is saved to the repository) before saving attributes
  4. Retry the save after the repository DB recovers; if schema-related, run the repository upgrade tool

Example fix

// before
jobEntry.saveRep(rep, metaStore, idJob);
// after
try {
  jobEntry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
  logError("Save failed for SendNagiosPassiveCheck: " + e.getCause(), e);
  // reconnect repository / verify DB write permissions, then retry
}
Defensive patterns

Strategy: try-catch

Validate before calling

// before saveRep
if (entry.getObjectId() == null) throw new IllegalStateException("Entry not persisted; save job entry first");
if (id_job == null) throw new IllegalArgumentException("id_job is null");

Try / catch

try {
  entry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
  logError("Save failed: " + (e.getCause() != null ? e.getCause().getMessage() : e.getMessage()), e);
  // surface to user / retry after DB recovery
}

Prevention

When it happens

Trigger: Calling saveRep (or saving the job from Spoon) when rep.saveJobEntryAttribute throws: repository DB connection lost, table locked or read-only, constraint violation, or id_job/getObjectId() being null/invalid.

Common situations: Repository DB restarted or network dropped mid-save; read-only database user; repository schema mismatch after Pentaho version change; saving a job entry that was never persisted (null ObjectId).

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/sendnagiospassivecheck/JobEntrySendNagiosPassiveCheck.java:303

  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "port", port );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "servername", serverName );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "password", password );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "responseTimeOut", responseTimeOut );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "connectionTimeOut", connectionTimeOut );

      rep.saveJobEntryAttribute( id_job, getObjectId(), "senderServerName", senderServerName );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "senderServiceName", senderServiceName );

      rep.saveJobEntryAttribute( id_job, getObjectId(), "message", message );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "encryptionMode", getEncryptionModeCode( encryptionMode ) );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "level", getLevelCode( level ) );

    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException(
        "Unable to save job entry of type 'SendNagiosPassiveCheck' to the repository for id_job=" + id_job, dbe );
    }
  }

  /**
   * @return Returns the serverName.
   */
  public String getServerName() {
    return serverName;
  }

  /**
   * @param serverName
   *          The serverName to set.
   */
  public void setServerName( String serverName ) {
    this.serverName = serverName;
  }

View on GitHub (pinned to f3058517a1)