{"record":{"id":"1487f51037bd3e95","repo":"pentaho/pentaho-kettle","slug":"error-0003-cannot-save-job-entry-jobentrywebserviceavailable","errorCode":"ERROR_0003_Cannot_Save_Job_Entry","errorMessage":"JobEntryWebServiceAvailable.ERROR_0003_Cannot_Save_Job_Entry","messagePattern":"JobEntryWebServiceAvailable\\.ERROR_0003_Cannot_Save_Job_Entry","errorType":"error_code","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/webserviceavailable/JobEntryWebServiceAvailable.java","lineNumber":111,"sourceCode":"  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      url = rep.getJobEntryAttributeString( id_jobentry, \"url\" );\n      connectTimeOut = rep.getJobEntryAttributeString( id_jobentry, \"connectTimeOut\" );\n      readTimeOut = rep.getJobEntryAttributeString( id_jobentry, \"readTimeOut\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"JobEntryWebServiceAvailable.ERROR_0002_Cannot_Load_Job_From_Repository\", \"\" + id_jobentry ), dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"url\", url );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"connectTimeOut\", connectTimeOut );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"readTimeOut\", readTimeOut );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"JobEntryWebServiceAvailable.ERROR_0003_Cannot_Save_Job_Entry\", \"\" + id_job ), dbe );\n    }\n  }\n\n  public void setURL( String url ) {\n    this.url = url;\n  }\n\n  public String getURL() {\n    return url;\n  }\n\n  public void setConnectTimeOut( String timeout ) {\n    this.connectTimeOut = timeout;\n  }\n\n  public String getConnectTimeOut() {\n    return connectTimeOut;","sourceCodeStart":93,"sourceCodeEnd":129,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/webserviceavailable/JobEntryWebServiceAvailable.java#L93-L129","documentation":"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.","triggerScenarios":"Calling saveRep with a repository that cannot write — DB down, read-only, constraint violation, or value exceeding column length.","commonSituations":"Saving a job during a repository outage; oversized timeout values or URLs; repository disk full; schema mismatch after upgrade.","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"],"exampleFix":"// before\nentry.saveRep(rep, metaStore, idJob); // throws\n// after\ntry {\n  entry.saveRep(rep, metaStore, idJob);\n} catch (KettleException e) {\n  logError(\"Cannot save web-service-available entry: \" + e.getCause(), e);\n}","handlingStrategy":"try-catch","validationCode":"if (rep == null || idJob == null) throw new IllegalArgumentException(\"repository and id_job required\");\n// sanity-check url/timeouts before saving\nif (url != null && url.length() > 2000) throw new IllegalArgumentException(\"url too long for repository column\");","typeGuard":null,"tryCatchPattern":"try {\n  entry.saveRep(rep, metaStore, idJob);\n} catch (KettleException e) {\n  logError(\"SaveRep failed: \" + e.getCause(), e);\n}","preventionTips":["Verify repository write access before saving","Keep URL and timeout values within column limits","Confirm DB disk space and constraint state on upgrades"],"tags":["kettle","repository","save","database"],"backgroundTag":"database-write-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}