pentaho/pentaho-kettle · error · KettleException
Unable to load job entry of type 'get pop' exists from the…
Error message
Unable to load job entry of type 'get pop' exists from the repository for idJobEntry=<idJobEntry>
What it means
JobEntryGetPOP's repository-loading constructor wraps any KettleException from reading the job entry's attributes into 'Unable to load job entry of type 'get pop' exists from the repository for idJobEntry=<idJobEntry>'. It means the POP/IMAP job entry's stored settings could not be read from the repository database.
Solutions
- Check repository database connectivity and that the job entry rows exist for the given idJobEntry
- Re-save the job entry from Spoon to regenerate its repository attributes
- Verify Pentaho and repository schema versions are compatible
Defensive patterns
Strategy: try-catch
Validate before calling
// before loading the job from repository: SELECT COUNT(*) FROM r_jobentry_attribute WHERE id_jobentry = ?;
Try / catch
try { jobEntry.loadRep(rep, metaStore, idJobEntry, databases, metaStore); } catch (KettleException e) {
log.error("Load from repository failed (idJobEntry=" + idJobEntry + "): " + e.getMessage(), e);
// re-save the entry or fall back to a .kjb export
} Prevention
- Back up and verify the repository schema after Pentaho upgrades
- Confirm DB connectivity before opening repository-based jobs
- Re-save job entries if attribute rows look stale or missing
When it happens
Trigger: JobEntryGetPOP (public) loadRep called with an idJobEntry: rep.getJobEntryAttributeString/Boolean throws (DB connection failure, missing rows, bad schema) while reading tags like AFTER_GET_IMAP or USE_PROXY.
Common situations: Repository database unavailable or migrated, r_jobentry_attribute rows missing/corrupt, loading a job from a repository written by an incompatible Pentaho version.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- JobEntryCheckFilesLocked.UnableToLoadFromRepo
- JobEntryCheckFilesLocked.UnableToSaveToRepo
- JobEntryColumnsExist.Meta.UnableLoadRep
- JobEntryColumnsExist.Meta.UnableSaveRep
- JobEntryEval.UnableToLoadFromRepo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/172261152758f1c3.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/email-messages/impl/src/main/java/org/pentaho/di/job/entries/getpop/JobEntryGetPOP.java:504
bodySearch = rep.getJobEntryAttributeString( idJobEntry, TAG_BODY_SEARCH );
notTermBodySearch = rep.getJobEntryAttributeBoolean( idJobEntry, TAG_NOT_TERM_BODY_SEARCH );
conditionReceivedDate = MailConnectionMeta.getConditionByCode( Const.NVL( rep.getJobEntryAttributeString(
idJobEntry, TAG_CONDITION_RECEIVED_DATE ), "" ) );
notTermReceivedDateSearch = rep.getJobEntryAttributeBoolean( idJobEntry, TAG_NOT_TERM_RECEIVED_DATE_SEARCH );
receivedDate1 = rep.getJobEntryAttributeString( idJobEntry, TAG_RECEIVED_DATE_1 );
receivedDate2 = rep.getJobEntryAttributeString( idJobEntry, TAG_RECEIVED_DATE_2 );
actiontype = MailConnectionMeta.getActionTypeByCode( Const.NVL( rep.getJobEntryAttributeString(
idJobEntry, TAG_ACTION_TYPE ), "" ) );
moveToIMAPFolder = rep.getJobEntryAttributeString( idJobEntry, TAG_MOVE_TO_IMAP_FOLDER );
createMoveToFolder = rep.getJobEntryAttributeBoolean( idJobEntry, TAG_CREATE_MOVE_TO_FOLDER );
createLocalFolder = rep.getJobEntryAttributeBoolean( idJobEntry, TAG_CREATE_LOCAL_FOLDER );
aftergetimap = MailConnectionMeta.getAfterGetIMAPByCode( Const.NVL( rep.getJobEntryAttributeString(
idJobEntry, TAG_AFTER_GET_IMAP ), "" ) );
includeSubfolders = rep.getJobEntryAttributeBoolean( idJobEntry, TAG_INCLUDE_SUBFOLDERS );
useProxy = rep.getJobEntryAttributeBoolean( idJobEntry, TAG_USE_PROXY );
proxyUserName = rep.getJobEntryAttributeString( idJobEntry, TAG_PROXY_USER_NAME );
} catch ( KettleException dbe ) {
throw new KettleException(
"Unable to load job entry of type 'get pop' exists from the repository for idJobEntry=" + idJobEntry,
dbe );
}
}
@Override
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_SERVERNAME, serverName );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_USERNAME, userName );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_PASSWORD,
Encr.encryptPasswordIfNotUsingVariables( password ) );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_USE_SSL, useSsl );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_SSL_PORT, sslPort );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_OUTPUT_DIRECTORY, outputDirectory );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_FILENAME_PATTERN, filenamePattern );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_RETRIEVE_MAILS, retrieveMails );
rep.saveJobEntryAttribute( id_job, getObjectId(), TAG_FIRST_MAILS, firstMails );View on GitHub (pinned to f3058517a1)