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
- Check the cause for the SQL error and resolve the repository DB issue (connectivity, permissions, space)
- Ensure the entry is inserted with a valid ObjectId before saving attributes; save the job through the normal rep.save flow
- 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
- Persist jobs via the normal repository save flow with valid ObjectIds
- Maintain repository DB health (space, permissions, connections)
- Apply schema upgrades so legacy attributes like nbrpaquets remain writable
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
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- ERROR_0003
- InsertUpdateMeta.Exception.UnableToSaveStepInfoToRepository
- JobEntryMSAccessBulkLoad.Meta.UnableSave
- JobPGPEncryptFiles.Error.Exception.UnableSaveRep
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)