pentaho/pentaho-kettle · error · KettleException

JobEntryAddResultFilenames.UnableToLoadFromRepo

Error message

JobEntryAddResultFilenames.UnableToLoadFromRepo

What it means

loadRep throws KettleException with this message when reading the AddResultFilenames entry's arguments/filemasks from the repository database fails. It wraps the underlying KettleException (usually a KettleDatabaseException) and includes the job entry ObjectId for diagnosis.

Solutions

  1. Verify the repository database connection (test in the repository login dialog).
  2. Check R_JOBENTRY_ATTRIBUTE rows exist for the given id_jobentry; re-save the job entry if missing.
  3. Run the repository upgrade scripts if the Pentaho version changed.

Example fix

// before
arguments[a] = rep.getJobEntryAttributeString( id_jobentry, a, "name" );
// after (defensive)
String name = rep.getJobEntryAttributeString( id_jobentry, a, "name" );
arguments[a] = name != null ? name : "";
Defensive patterns

Strategy: try-catch

Validate before calling

// verify repository connectivity and entry existence before load
if ( !rep.connect( username, password ) ) throw new IllegalStateException( "repo unreachable" );
ObjectId id = rep.getJobEntryObjectId( jobMeta, entryName );
if ( id == null ) throw new IllegalStateException( "job entry missing in repository" );

Try / catch

try { entry.loadRep( rep, metaStore, id_jobentry, databases, slaveServers ); } catch ( KettleException e ) { logError( "repo load failed for " + id_jobentry + ": " + e.getMessage(), e ); }

Prevention

When it happens

Trigger: rep.getJobEntryAttributeString(id_jobentry, a, "name"/"filemask") throwing because the repository connection is down, the job entry row was deleted, or a schema mismatch exists.

Common situations: Repository database unreachable, entries deleted by another user mid-load, upgraded repository schema missing R_JOBENTRY_ATTRIBUTE rows.

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

Appendix: source

Thrown at plugins/core/impl/src/main/java/org/pentaho/di/job/entries/addresultfilenames/JobEntryAddResultFilenames.java:171

    List<SlaveServer> slaveServers ) throws KettleException {
    try {
      argFromPrevious = rep.getJobEntryAttributeBoolean( id_jobentry, "arg_from_previous" );
      includeSubfolders = rep.getJobEntryAttributeBoolean( id_jobentry, "include_subfolders" );

      deleteallbefore = rep.getJobEntryAttributeBoolean( id_jobentry, "delete_all_before" );

      // How many arguments?
      int argnr = rep.countNrJobEntryAttributes( id_jobentry, "name" );
      arguments = new String[argnr];
      filemasks = new String[argnr];

      // Read them all...
      for ( int a = 0; a < argnr; a++ ) {
        arguments[a] = rep.getJobEntryAttributeString( id_jobentry, a, "name" );
        filemasks[a] = rep.getJobEntryAttributeString( id_jobentry, a, "filemask" );
      }
    } catch ( KettleException dbe ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "JobEntryAddResultFilenames.UnableToLoadFromRepo", String.valueOf( id_jobentry ) ), dbe );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "arg_from_previous", argFromPrevious );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "include_subfolders", includeSubfolders );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "delete_all_before", deleteallbefore );

      // save the arguments...
      if ( arguments != null ) {
        for ( int i = 0; i < arguments.length; i++ ) {
          rep.saveJobEntryAttribute( id_job, getObjectId(), i, "name", arguments[i] );
          rep.saveJobEntryAttribute( id_job, getObjectId(), i, "filemask", filemasks[i] );
        }
      }
    } catch ( KettleDatabaseException dbe ) {

View on GitHub (pinned to f3058517a1)