pentaho/pentaho-kettle · error · KettleException

Unable to read job entry interface information from…

Error message

Unable to read job entry interface information from repository

What it means

JobDelegate.readJobEntry loads one job entry (JobEntryInterface) from the repository and calls its loadRep. Any exception during loading or registering the entry is wrapped in a KettleException with this message; the root cause is chained.

Solutions

  1. Check the chained cause for the missing plugin class or read failure.
  2. Install/align the missing job entry plugin on the machine loading the job.
  3. Re-save the job from Spoon so the job entry data is rewritten completely.
  4. Verify repository read permissions on the job entry sub-nodes.

Example fix

// before
} catch ( Exception e ) { throw new KettleException( msg, e ); }
// after
} catch ( ClassNotFoundException cnfe ) { throw new KettleException("Job entry plugin missing: install it before loading", cnfe); } catch ( Exception e ) { throw new KettleException( msg, e ); }
Defensive patterns

Strategy: try-catch

Try / catch

try { return readJobEntry(copyNode, jobMeta, jobentries); } catch (KettleException e) { Throwable c = e.getCause(); if (c instanceof ClassNotFoundException) { /* install missing job entry plugin */ } throw e; }

Prevention

When it happens

Trigger: jobEntry -> readJobEntry with a job entry whose loadRep throws — typically the job entry type's data is missing/corrupt in the repository, the job entry plugin class is not installed on the client, or loadRep arguments (databases, slave servers) are inconsistent.

Common situations: A job was saved with a job-entry plugin that is not installed where the job is loaded; job entry repository data partially written by a failed save; version mismatch between server and client plugin sets.

Understand the failure class

Background: "not installed", "pip install", "required for": how missing-dependency errors surface across open-source libraries — this error's family across 34 libraries.

Related errors


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

Appendix: source

Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/JobDelegate.java:404

        MissingEntry missingEntry = new MissingEntry( jobMeta.getName(), typeId );
        jobMeta.addMissingEntry( missingEntry );
        jobMetaInterface = missingEntry;
      }
      jobMetaInterface.setName( name );
      jobMetaInterface.setDescription( getString( copyNode, PROP_DESCRIPTION ) );
      jobMetaInterface.setObjectId( new StringObjectId( copyNode.getId().toString() ) );
      RepositoryProxy proxy = new RepositoryProxy( copyNode.getNode( NODE_CUSTOM ), this.repo );

      jobMetaInterface.setMetaStore( jobMeta.getMetaStore() ); // make sure metastore is passed
      if ( !isMissing ) {
        compatibleJobEntryLoadRep( jobMetaInterface, proxy, null, jobMeta.getDatabases(), jobMeta.getSlaveServers() );
        jobMetaInterface.loadRep( proxy, jobMeta.getMetaStore(), null, jobMeta.getDatabases(), jobMeta
            .getSlaveServers() );
      }
      jobentries.add( jobMetaInterface );
      return jobMetaInterface;
    } catch ( Exception e ) {
      throw new KettleException( "Unable to read job entry interface information from repository", e );
    }
  }

  @SuppressWarnings( "deprecation" )
  private void compatibleJobEntryLoadRep( JobEntryInterface jobEntry, Repository repository, ObjectId id_jobentry_type,
      List<DatabaseMeta> databases, List<SlaveServer> slaveServers ) throws KettleException {

    jobEntry.loadRep( repository, id_jobentry_type, databases, slaveServers );
  }

  public DataNode elementToDataNode( final RepositoryElementInterface element ) throws KettleException {
    JobMeta jobMeta = (JobMeta) element;

    DataNode rootNode = new DataNode( NODE_JOB );

    // Save the notes
    //
    DataNode notesNode = rootNode.addNode( NODE_NOTES );

View on GitHub (pinned to f3058517a1)