pentaho/pentaho-kettle · error · KettleException

JobExportRepository.Meta.UnableLoadRep

JobExportRepository.Meta.UnableLoadRep

Error message

JobExportRepository.Meta.UnableLoadRep

What it means

JobEntryExportRepository.loadRep wraps repository read failures in a KettleException with the localized 'JobExportRepository.Meta.UnableLoadRep' message including the job entry id. Attributes for the entry could not be read from the repository.

Solutions

  1. Inspect the wrapped KettleException cause for the SQL error
  2. Verify repository connectivity and that the job entry still exists
  3. Run repository repair/upgrade utilities if schema versions differ
Defensive patterns

Strategy: try-catch

Try / catch

try { entry.loadRep( rep, metaStore, idJobEntry, databases, slaves ); } catch ( KettleException e ) { log.error( "Load from repo failed: " + e.getCause(), e ); }

Prevention

When it happens

Trigger: loadRep invoked with an id_jobentry whose r_jobentry_attribute rows are missing/corrupt, or the repository connection fails during getJobEntryAttribute* calls.

Common situations: Repository schema mismatch after upgrades; deleted/purged repository rows; DB connectivity problems.

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/9b8ccfae2a344689. Report an issue: GitHub.

Appendix: source

Thrown at plugins/export-repository/impl/src/main/java/org/pentaho/di/job/entries/exportrepository/JobEntryExportRepository.java:223

      password =
        Encr.decryptPasswordOptionallyEncrypted( rep.getJobEntryAttributeString( id_jobentry, "password" ) );
      targetfilename = rep.getJobEntryAttributeString( id_jobentry, "targetfilename" );
      iffileexists = rep.getJobEntryAttributeString( id_jobentry, "iffileexists" );
      export_type = rep.getJobEntryAttributeString( id_jobentry, "export_type" );
      directoryPath = rep.getJobEntryAttributeString( id_jobentry, "directoryPath" );
      add_date = rep.getJobEntryAttributeBoolean( id_jobentry, "add_date" );
      add_time = rep.getJobEntryAttributeBoolean( id_jobentry, "add_time" );
      SpecifyFormat = rep.getJobEntryAttributeBoolean( id_jobentry, "SpecifyFormat" );
      date_time_format = rep.getJobEntryAttributeString( id_jobentry, "date_time_format" );
      createfolder = rep.getJobEntryAttributeBoolean( id_jobentry, "createfolder" );
      newfolder = rep.getJobEntryAttributeBoolean( id_jobentry, "newfolder" );
      add_result_filesname = rep.getJobEntryAttributeBoolean( id_jobentry, "add_result_filesname" );
      nr_errors_less_than = rep.getJobEntryAttributeString( id_jobentry, "nr_errors_less_than" );

      success_condition = rep.getJobEntryAttributeString( id_jobentry, "success_condition" );

    } catch ( KettleException dbe ) {
      throw new KettleException( BaseMessages.getString( PKG, "JobExportRepository.Meta.UnableLoadRep", ""
        + id_jobentry ), dbe );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "repositoryname", repositoryname );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "username", username );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "password", Encr
        .encryptPasswordIfNotUsingVariables( password ) );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "targetfilename", targetfilename );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "iffileexists", iffileexists );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "export_type", export_type );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "directoryPath", directoryPath );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "add_date", add_date );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "add_time", add_time );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "SpecifyFormat", SpecifyFormat );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "date_time_format", date_time_format );

View on GitHub (pinned to f3058517a1)