pentaho/pentaho-kettle · error · KettleException

JobDosToUnix.Error.Exception.UnableLoadRep

Error message

JobDosToUnix.Error.Exception.UnableLoadRep

What it means

Thrown when reading a 'DOS to Unix' job entry's attributes from the repository fails in loadRep(). The KettleException from rep.getJobEntryAttributeString() is rethrown with this message plus the entry id and the cause chained. The metadata could not be loaded from the database repository.

Solutions

  1. Inspect the chained KettleDatabaseException cause for the actual SQL error
  2. Restore DB connectivity and retry loading the job
  3. Run repository upgrade scripts to match your Kettle version
  4. Re-save the entry from Spoon to repopulate its attributes

Example fix

// before
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
// after
try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logError("UnableLoadRep for id " + idJobEntry + ": " + e.getCause());
  throw e;
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (rep instanceof KettleDatabaseRepository
    && !((KettleDatabaseRepository) rep).isConnected()) {
  throw new IllegalStateException("Repository must be connected before loadRep");
}

Try / catch

try {
  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
  logError("UnableLoadRep id=" + idJobEntry + " cause=" + e.getCause());
  throw e;
}

Prevention

When it happens

Trigger: Calling loadRep() during job load from a DB repository when the ConversionType/name attribute SELECTs throw KettleException: connection lost, missing table, or repository error.

Common situations: Repository schema drift after Pentaho upgrade; DB connection reset; missing attribute rows for the entry id; insufficient SELECT privileges.

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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/dostounix/JobEntryDosToUnix.java:272

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

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

      // Read them all...
      for ( int a = 0; a < argnr; a++ ) {
        source_filefolder[a] = rep.getJobEntryAttributeString( id_jobentry, a, "source_filefolder" );
        wildcard[a] = rep.getJobEntryAttributeString( id_jobentry, a, "wildcard" );
        conversionTypes[a] =
          getConversionTypeByCode( Const.NVL(
            rep.getJobEntryAttributeString( id_jobentry, "ConversionType" ), "" ) );
      }
    } catch ( KettleException dbe ) {

      throw new KettleException( BaseMessages.getString( PKG, "JobDosToUnix.Error.Exception.UnableLoadRep" )
        + id_jobentry, dbe );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "arg_from_previous", arg_from_previous );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "include_subfolders", include_subfolders );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "nr_errors_less_than", nr_errors_less_than );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "success_condition", success_condition );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "resultfilenames", resultfilenames );

      // save the arguments...
      if ( source_filefolder != null ) {
        for ( int i = 0; i < source_filefolder.length; i++ ) {
          rep.saveJobEntryAttribute( id_job, getObjectId(), i, "source_filefolder", source_filefolder[i] );
          rep.saveJobEntryAttribute( id_job, getObjectId(), i, "wildcard", wildcard[i] );
          rep.saveJobEntryAttribute(

View on GitHub (pinned to f3058517a1)