pentaho/pentaho-kettle · error · KettleException
ERROR_0003_Cannot_Save_Job_Entry
ERROR_0003_Cannot_Save_Job_Entry
Error message
JobEntryWebServiceAvailable.ERROR_0003_Cannot_Save_Job_Entry
What it means
KettleException (code ERROR_0003) thrown by JobEntryWebServiceAvailable.saveRep when persisting url/connectTimeOut/readTimeOut attributes fails with a KettleDatabaseException. The original DB error is chained and the job id included. Changes to the entry were not saved.
Solutions
- Check repository connectivity and write access
- Inspect the wrapped KettleDatabaseException for the specific SQL failure
- Verify attribute values fit repository column constraints
- Retry the save once the repository is healthy
Example fix
// before
entry.saveRep(rep, metaStore, idJob); // throws
// after
try {
entry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
logError("Cannot save web-service-available entry: " + e.getCause(), e);
} Defensive patterns
Strategy: try-catch
Validate before calling
if (rep == null || idJob == null) throw new IllegalArgumentException("repository and id_job required");
// sanity-check url/timeouts before saving
if (url != null && url.length() > 2000) throw new IllegalArgumentException("url too long for repository column"); Try / catch
try {
entry.saveRep(rep, metaStore, idJob);
} catch (KettleException e) {
logError("SaveRep failed: " + e.getCause(), e);
} Prevention
- Verify repository write access before saving
- Keep URL and timeout values within column limits
- Confirm DB disk space and constraint state on upgrades
When it happens
Trigger: Calling saveRep with a repository that cannot write — DB down, read-only, constraint violation, or value exceeding column length.
Common situations: Saving a job during a repository outage; oversized timeout values or URLs; repository disk full; schema mismatch after upgrade.
Related errors
- GetSequenceMeta.Exception.UnableToSaveStepInfo
- JobEntryWaitForSQL.UnableSaveRep
- SalesforceInputMeta.Exception.ErrorSavingToRepository
- Unable to save job entry copy to the repository…
- Unable to save job entry of type 'create file' to the…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/1487f51037bd3e95.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/webserviceavailable/JobEntryWebServiceAvailable.java:111
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
url = rep.getJobEntryAttributeString( id_jobentry, "url" );
connectTimeOut = rep.getJobEntryAttributeString( id_jobentry, "connectTimeOut" );
readTimeOut = rep.getJobEntryAttributeString( id_jobentry, "readTimeOut" );
} catch ( KettleException dbe ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobEntryWebServiceAvailable.ERROR_0002_Cannot_Load_Job_From_Repository", "" + id_jobentry ), dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "url", url );
rep.saveJobEntryAttribute( id_job, getObjectId(), "connectTimeOut", connectTimeOut );
rep.saveJobEntryAttribute( id_job, getObjectId(), "readTimeOut", readTimeOut );
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobEntryWebServiceAvailable.ERROR_0003_Cannot_Save_Job_Entry", "" + id_job ), dbe );
}
}
public void setURL( String url ) {
this.url = url;
}
public String getURL() {
return url;
}
public void setConnectTimeOut( String timeout ) {
this.connectTimeOut = timeout;
}
public String getConnectTimeOut() {
return connectTimeOut;View on GitHub (pinned to f3058517a1)