pentaho/pentaho-kettle · error · KettleException

Unable to load job entry of type 'create file' from the…

Error message

Unable to load job entry of type 'create file' from the repository for id_jobentry=${id_jobentry}

What it means

JobEntryCreateFile.loadRep throws this KettleException when loading the 'create file' job entry's attributes from the Pentaho repository fails for the given id_jobentry. It wraps KettleException (typically database errors) raised by rep.getJobEntryAttributeString/Boolean.

Solutions

  1. Check repository database connectivity and retry opening the job.
  2. Re-save the job entry in Spoon to recreate missing attribute rows.
  3. Verify repository schema version matches the Pentaho version (repair/upgrade repository).
  4. Inspect the chained cause for the underlying SQL error.
Defensive patterns

Strategy: try-catch

Validate before calling

if (id_jobentry == null || id_jobentry.getId() <= 0) throw new IllegalArgumentException("id_jobentry must be a saved object id");
if (!rep.isConnected() && !rep.connect()) throw new IllegalStateException("Repository DB unreachable");

Try / catch

try {
  jobEntry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);
} catch (KettleException e) {
  logError("Repo load failed for create-file entry " + id_jobentry + ": " + e.getCause(), e);
  // reconnect and retry once, then apply defaults
}

Prevention

When it happens

Trigger: Calling loadRep when reading 'filename', 'fail_if_file_exists' or 'add_filename_result' attributes fails — repository connection error, missing R_JOBENTRY_ATTRIBUTE rows, or DB-level failure for that id_jobentry.

Common situations: Repository DB temporarily unreachable when opening a job; rows purged/corrupted in the repository; schema version mismatch after upgrading Pentaho; restored repository backup missing recent 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/ee46eca1b751820b. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/createfile/JobEntryCreateFile.java:114

      super.loadXML( entrynode, databases, slaveServers );
      filename = XMLHandler.getTagValue( entrynode, "filename" );
      failIfFileExists = "Y".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, "fail_if_file_exists" ) );
      addfilenameresult = "Y".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, "add_filename_result" ) );

    } catch ( KettleXMLException xe ) {
      throw new KettleXMLException( "Unable to load job entry of type 'create file' from XML node", xe );
    }
  }

  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" );
      failIfFileExists = rep.getJobEntryAttributeBoolean( id_jobentry, "fail_if_file_exists" );
      addfilenameresult = rep.getJobEntryAttributeBoolean( id_jobentry, "add_filename_result" );

    } catch ( KettleException dbe ) {
      throw new KettleException(
        "Unable to load job entry of type 'create file' from the repository for id_jobentry=" + id_jobentry, dbe );
    }
  }

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

    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException( "Unable to save job entry of type 'create file' to the repository for id_job="
        + id_job, dbe );
    }
  }

  public void setFilename( String filename ) {
    this.filename = filename;

View on GitHub (pinned to f3058517a1)