pentaho/pentaho-kettle · error · KettleException

Unable to save job entry of type 'ping' to the repository…

Error message

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

What it means

JobEntryPing.saveRep wraps any KettleDatabaseException from saving the ping entry's attributes (including legacy 'nbrpaquets') into a KettleException with message 'Unable to save job entry of type ping to the repository for id_job=' + id. The DB error is the cause. It means the ping entry could not be written to the repository.

Solutions

  1. Check the cause for the SQL error and resolve the repository DB issue (connectivity, permissions, space)
  2. Ensure the entry is inserted with a valid ObjectId before saving attributes; save the job through the normal rep.save flow
  3. Reconnect and retry; clean up partially written attribute rows if needed

Example fix

// before
entry.saveRep(rep, metaStore, idJob); // may throw
// after
try {
  entry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
  logError("Cannot save ping entry to repository: " + e.getCause(), e);
  // warn user changes are not persisted
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (entry.getObjectId() == null) throw new KettleException("Save the job entry before saving attributes");
rep.connect(); // fail fast if repository unreachable

Try / catch

try {
  entry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
  logError("Cannot save ping entry: " + e.getCause(), e);
  // retry after DB fix; verify no partial attribute rows
}

Prevention

When it happens

Trigger: Calling saveRep (directly or via saving the job) when any rep.saveJobEntryAttribute call throws KettleDatabaseException: connection failure, constraint violation, read-only DB, or invalid/unsaved ObjectId.

Common situations: Repository session dropped during save; DB out of disk/quota; saving an entry that was never inserted (null ObjectId); schema mismatch on legacy attribute keys after upgrade.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/ping/JobEntryPing.java:189

        }
      }
    } catch ( KettleException dbe ) {
      throw new KettleException(
        "Unable to load job entry of type 'ping' exists from the repository for id_jobentry=" + id_jobentry, dbe );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "hostname", hostname );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "nbr_packets", nbrPackets );

      // TODO: The following line may be removed 3 versions after 2.5.0
      rep.saveJobEntryAttribute( id_job, getObjectId(), "nbrpaquets", nbrPackets );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "timeout", timeout );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "pingtype", pingtype );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException(
        "Unable to save job entry of type 'ping' to the repository for id_job=" + id_job, dbe );
    }
  }

  public static boolean isPositiveInteger( String strNum ) {
    boolean result = true;
    if ( strNum == null ) {
      result = false;
    } else {
      try {
        int value = Integer.parseInt( strNum.trim() );
        if ( value <= 0 ) {
          result = false;
        }
      } catch ( NumberFormatException nfe ) {
        result = false;
      }
    }

View on GitHub (pinned to f3058517a1)