{"record":{"id":"89ecc24d23483aa4","repo":"pentaho/pentaho-kettle","slug":"unable-to-save-job-entry-of-type-get-pop-to-the-repository","errorCode":null,"errorMessage":"Unable to save job entry of type 'get pop' to the repository for id_job=<id_job>","messagePattern":"Unable to save job entry of type 'get pop' to the repository for id_job=<id_job>","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/JobEntryGetPOP.java","lineNumber":571,"sourceCode":"      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_BODY_SEARCH, bodySearch );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_NOT_TERM_BODY_SEARCH, notTermBodySearch );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_CONDITION_RECEIVED_DATE, MailConnectionMeta\n        .getConditionDateCode( conditionReceivedDate ) );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_NOT_TERM_RECEIVED_DATE_SEARCH, notTermReceivedDateSearch );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_RECEIVED_DATE_1, receivedDate1 );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_RECEIVED_DATE_2, receivedDate2 );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_ACTION_TYPE, MailConnectionMeta\n        .getActionTypeCode( actiontype ) );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_MOVE_TO_IMAP_FOLDER, moveToIMAPFolder );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_CREATE_MOVE_TO_FOLDER, createMoveToFolder );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_CREATE_LOCAL_FOLDER, createLocalFolder );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_AFTER_GET_IMAP, MailConnectionMeta\n        .getAfterGetIMAPCode( aftergetimap ) );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_INCLUDE_SUBFOLDERS, includeSubfolders );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_USE_PROXY, useProxy );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_PROXY_USER_NAME, proxyUserName );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( \"Unable to save job entry of type 'get pop' to the repository for id_job=\"\n        + id_job, dbe );\n    }\n  }\n\n  public String getPort() {\n    return sslPort;\n  }\n\n  /**\n   * @return Returns the usingAuthentication.\n   */\n  public String isUsingAuthentication() {\n    return usingAuthentication;\n  }\n\n  /**\n   * @param usingAuthentication\n   *          The usingAuthentication to set.","sourceCodeStart":553,"sourceCodeEnd":589,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/JobEntryGetPOP.java#L553-L589","documentation":"JobEntryGetPOP.saveRep() writes the entry's attributes (after-get action, subfolders, proxy settings, etc.); a KettleDatabaseException is wrapped in 'Unable to save job entry of type 'get pop' to the repository for id_job=<id_job>'. It means persisting the job entry's configuration to the repository failed at the database level.","triggerScenarios":"JobEntryGetPOP (public saveRep) called while saving a job: rep.saveJobEntryAttribute throws KettleDatabaseException due to connection loss, transaction rollback, constraint violation, or read-only database.","commonSituations":"Repository DB read-only or out of space, connection dropped mid-save, overlong attribute values exceeding column sizes.","solutions":["Confirm the repository database is writable and reachable, then retry saving","Check r_jobentry_attribute for constraint or column-length violations caused by the values being saved","As a workaround, export the job as XML (.kjb) instead of saving to the repository"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// before saving the job: check repository writability and row size limits\n// ensure attribute values fit column lengths in r_jobentry_attribute","typeGuard":null,"tryCatchPattern":"try { saveRep(rep, metaStore, idJob, databases, metaStore); } catch (KettleException e) {\n  if (e.getCause() instanceof KettleDatabaseException) {\n    log.warn(\"DB save failed, retrying after reconnect...\");\n    // reconnect and retry once, else export .kjb\n  }\n}","preventionTips":["Ensure the repository account has INSERT/UPDATE on r_jobentry_attribute","Keep attribute values (paths, proxy names) within column size limits","Retain .kjb exports as a fallback when repository saves fail"],"tags":["kettle","repository","database","job-entry"],"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"}