pentaho/pentaho-kettle · error · KettleException

ERROR_0002_Cannot_Load_Job_From_Repository

ERROR_0002_Cannot_Load_Job_From_Repository

Error message

JobEntryFilesExist.ERROR_0002_Cannot_Load_Job_From_Repository

What it means

Thrown by JobEntryFilesExist.loadRep when reading the entry's argument (filename) attributes from the repository fails. It wraps the KettleException with a localized message including the id_jobentry and dbe.getMessage(), but does not chain the cause. It means repository attribute reads for this entry failed.

Solutions

  1. Verify repository connectivity and retry the load
  2. Check r_jobentry_attribute rows with attr_nr indexes exist for this id_jobentry
  3. Apply repository schema upgrade scripts if versions differ
  4. Re-save the entry from Spoon to rebuild its attribute rows
Defensive patterns

Strategy: retry

Validate before calling

// Check argument rows exist before loading
int argnr = rep.countNumJobEntryAttributes(id_jobentry);
if (argnr <= 0) { throw new IllegalStateException("no argument rows for entry " + id_jobentry); }

Try / catch

try {
    jobEntry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);
} catch (KettleException e) {
    logError("Repository load failed: " + e.getMessage());
    // reconnect and retry; cause is not chained, use getMessage()
}

Prevention

When it happens

Trigger: Loading from a database repository when getJobEntryAttributeString(id_jobentry, a, "name") or the argument-count read throws — missing rows, connection failure, repository error.

Common situations: Repository upgrade mismatch; partial save left some 'name' attribute rows missing; transient DB outage while opening a job.

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/1d9c9f3040a0f430. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/filesexist/JobEntryFilesExist.java:143

        PKG, "JobEntryFilesExist.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node", xe.getMessage() ) );
    }
  }

  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
    List<SlaveServer> slaveServers ) throws KettleException {
    try {
      filename = rep.getJobEntryAttributeString( id_jobentry, "filename" );

      // How many arguments?
      int argnr = rep.countNrJobEntryAttributes( id_jobentry, "name" );
      allocate( argnr );

      // Read them all...
      for ( int a = 0; a < argnr; a++ ) {
        arguments[a] = rep.getJobEntryAttributeString( id_jobentry, a, "name" );
      }
    } catch ( KettleException dbe ) {
      throw new KettleException( BaseMessages
        .getString( PKG, "JobEntryFilesExist.ERROR_0002_Cannot_Load_Job_From_Repository", "" + id_jobentry, dbe
          .getMessage() ) );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "filename", filename );

      // save the arguments...
      if ( arguments != null ) {
        for ( int i = 0; i < arguments.length; i++ ) {
          rep.saveJobEntryAttribute( id_job, getObjectId(), i, "name", arguments[i] );
        }
      }
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "JobEntryFilesExist.ERROR_0003_Cannot_Save_Job_Entry", "" + id_job, dbe.getMessage() ) );

View on GitHub (pinned to f3058517a1)