pentaho/pentaho-kettle · error · KettleXMLException

JobEntryCopyMoveResultFilenames.CanNotLoadFromRep

Error message

JobEntryCopyMoveResultFilenames.CanNotLoadFromRep

What it means

JobEntryCopyMoveResultFilenames.loadRep throws this KettleXMLException (notably wrapping a KettleException) when reading the entry's boolean/string attributes from the repository fails. The message includes id_jobentry and the database error message, telling the developer the entry could not be loaded from repository tables.

Solutions

  1. Verify repository database connectivity and retry opening the job.
  2. Run repository schema repair/upgrade so R_JOBENTRY_ATTRIBUTE matches the expected version.
  3. Re-save the job entry in Spoon to restore missing attribute rows.
  4. Read dbe.getMessage() included in the exception to identify the underlying SQL failure.
Defensive patterns

Strategy: try-catch

Validate before calling

if (id_jobentry == null) throw new IllegalArgumentException("id_jobentry required for loadRep");
if (!rep.isConnected() && !rep.connect()) throw new IllegalStateException("Repository unreachable");

Try / catch

try {
  jobEntry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);
} catch (KettleXMLException e) {
  logError("Repository load failed for id_jobentry=" + id_jobentry + ": " + e.getMessage(), e);
  // reconnect repository and retry once, then surface to user
}

Prevention

When it happens

Trigger: Calling loadRep when the repository throws KettleException while fetching attributes like 'SpecifyWildcard', 'Wildcard', 'OverwriteFile', 'AddDestinationFilename' for the given id_jobentry — e.g. connection failure or broken repository schema.

Common situations: Repository DB unreachable during job open; schema mismatch after upgrade; rows for this job entry missing because the entry was partially saved previously.

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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/copymoveresultfilenames/JobEntryCopyMoveResultFilenames.java:213

      wildcard = rep.getJobEntryAttributeString( id_jobentry, "wildcard" );
      wildcardexclude = rep.getJobEntryAttributeString( id_jobentry, "wildcardexclude" );
      destination_folder = rep.getJobEntryAttributeString( id_jobentry, "destination_folder" );
      nr_errors_less_than = rep.getJobEntryAttributeString( id_jobentry, "nr_errors_less_than" );
      success_condition = rep.getJobEntryAttributeString( id_jobentry, "success_condition" );
      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" );
      AddDateBeforeExtension = rep.getJobEntryAttributeBoolean( id_jobentry, "AddDateBeforeExtension" );
      action = rep.getJobEntryAttributeString( id_jobentry, "action" );

      OverwriteFile = rep.getJobEntryAttributeBoolean( id_jobentry, "OverwriteFile" );
      CreateDestinationFolder = rep.getJobEntryAttributeBoolean( id_jobentry, "CreateDestinationFolder" );
      RemovedSourceFilename = rep.getJobEntryAttributeBoolean( id_jobentry, "RemovedSourceFilename" );
      AddDestinationFilename = rep.getJobEntryAttributeBoolean( id_jobentry, "AddDestinationFilename" );

    } catch ( KettleException dbe ) {
      throw new KettleXMLException( BaseMessages.getString(
        PKG, "JobEntryCopyMoveResultFilenames.CanNotLoadFromRep", "" + id_jobentry, dbe.getMessage() ) );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      rep.saveJobEntryAttribute( id_job, getObjectId(), "foldername", foldername );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "specify_wildcard", specifywildcard );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "wildcard", wildcard );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "wildcardexclude", wildcardexclude );

      rep.saveJobEntryAttribute( id_job, getObjectId(), "destination_folder", destination_folder );
      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(), "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)