pentaho/pentaho-kettle · error · KettleException

Unable to load job entry of type 'SNMPTrap' from the…

Error message

Unable to load job entry of type 'SNMPTrap' from the repository for id_jobentry=

What it means

JobEntrySNMPTrap.loadRep wraps any KettleException raised while reading the SNMPTrap entry's attributes ('servername', 'port', 'community', 'targettype', 'user', 'passphrase', 'engineid') from the repository, rethrowing as KettleException with the message and id_jobentry. It indicates the repository metadata for this entry cannot be loaded.

Solutions

  1. Test and restore the repository database connection.
  2. Verify rows exist in R_JOBENTRY_ATTRIBUTE for the given id_jobentry.
  3. Re-create/re-save the SNMPTrap job entry to repopulate repository attributes.
  4. Inspect the chained cause for the underlying SQL failure and address it.
Defensive patterns

Strategy: try-catch

Validate before calling

if (idJobEntry == null || rep == null) throw new KettleException("Repository or id_jobentry missing before loadRep");

Try / catch

try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logger.error("SNMPTrap loadRep failed id=" + idJobEntry + ", cause=" + e.getCause(), e);
}

Prevention

When it happens

Trigger: Calling loadRep for a JobEntrySNMPTrap when Repository.getJobEntryAttributeString throws - repository DB unavailable, missing rows for the given id_jobentry, or corrupted attributes.

Common situations: Repository connection dropped while opening a job; rows deleted directly from the DB; schema drift after Pentaho upgrade; wrong id_jobentry passed in.

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


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/d105682516ff7ef9. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/snmptrap/JobEntrySNMPTrap.java:203

  }

  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
    List<SlaveServer> slaveServers ) throws KettleException {
    try {
      port = rep.getJobEntryAttributeString( id_jobentry, "port" );
      serverName = rep.getJobEntryAttributeString( id_jobentry, "servername" );
      oid = rep.getJobEntryAttributeString( id_jobentry, "oid" );
      message = rep.getJobEntryAttributeString( id_jobentry, "message" );
      comString = rep.getJobEntryAttributeString( id_jobentry, "comstring" );
      timeout = rep.getJobEntryAttributeString( id_jobentry, "timeout" );
      nrretry = rep.getJobEntryAttributeString( id_jobentry, "nrretry" );
      targettype = rep.getJobEntryAttributeString( id_jobentry, "targettype" );
      user = rep.getJobEntryAttributeString( id_jobentry, "user" );
      passphrase = Encr.decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( id_jobentry, "passphrase" ) );
      engineid = rep.getJobEntryAttributeString( id_jobentry, "engineid" );

    } catch ( KettleException dbe ) {
      throw new KettleException(
        "Unable to load job entry of type 'SNMPTrap' 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(), "port", port );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "servername", serverName );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "oid", oid );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "message", message );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "comstring", comString );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "timeout", timeout );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "nrretry", nrretry );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "targettype", targettype );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "user", user );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "passphrase", Encr.encryptPasswordIfNotUsingVariables( passphrase ) );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "engineid", engineid );

View on GitHub (pinned to f3058517a1)