pentaho/pentaho-kettle · error · KettleException

Unable to load partition schema from the file repository

Error message

Unable to load partition schema from the file repository

What it means

loadPartitionSchema(id, versionName) builds a PartitionSchema from the XML node returned by loadNodeFromXML(id, PartitionSchema.XML_TAG); failures loading or parsing the node are wrapped into this fixed-message KettleException with the original exception as cause.

Solutions

  1. Check the partition schema file exists in the repository folder for that id
  2. Recreate the partition schema in Spoon and save it
  3. Inspect getCause() for the concrete load or parse error
  4. Validate transformation metadata references point to existing schema ids
Defensive patterns

Strategy: try-catch

Validate before calling

if (id_partition_schema == null) throw new KettleException("No partition schema id referenced");

Try / catch

try {
  PartitionSchema ps = repository.loadPartitionSchema(id, null);
} catch (KettleException e) {
  logger.error("Partition schema load failed: " + e.getCause(), e);
  throw new KettleException("Partition schema missing or corrupt; recreate it in Spoon", e);
}

Prevention

When it happens

Trigger: Calling loadPartitionSchema when the partition schema file for the id is missing/unreadable or its XML is not a valid <partition_schema> node accepted by the PartitionSchema constructor.

Common situations: Partition schema referenced by a transformation but deleted from the repository; corrupted XML after a failed save; cluster/market setup where schema files were not copied to the repository location.

Understand the failure class

Background: "Not found" and "does not exist" errors: why "Task not found", "No such folder", and "Can't find" fire when a lookup comes back empty — this error's family across 14 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/17b712425d8d9585. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java:960

    jobMeta.setFilename( null );
    jobMeta.setName( jobname );
    jobMeta.setObjectId( new StringObjectId( calcObjectId( repdir, jobname, EXT_JOB ) ) );

    jobMeta.setRepository( this );
    jobMeta.setMetaStore( MetaStoreConst.getDefaultMetastore() );

    jobMeta.clearChanged();

    return jobMeta;

  }

  @Override
  public PartitionSchema loadPartitionSchema( ObjectId id_partition_schema, String versionName ) throws KettleException {
    try {
      return new PartitionSchema( loadNodeFromXML( id_partition_schema, PartitionSchema.XML_TAG ) );
    } catch ( Exception e ) {
      throw new KettleException( "Unable to load partition schema from the file repository", e );
    }
  }

  @Override
  public RepositoryDirectoryInterface loadRepositoryDirectoryTree() throws KettleException {
    RepositoryDirectory root = new RepositoryDirectory();
    root.setObjectId( new StringObjectId( "/" ) );
    return loadRepositoryDirectoryTree( root );
  }

  public RepositoryDirectoryInterface loadRepositoryDirectoryTree( RepositoryDirectoryInterface dir ) throws KettleException {
    try {
      String folderName = calcDirectoryName( dir );
      FileObject folder = KettleVFS.getInstance( DefaultBowl.getInstance() ).getFileObject( folderName );

      for ( FileObject child : folder.getChildren() ) {
        if ( child.getType().equals( FileType.FOLDER ) ) {
          if ( !child.isHidden() || !repositoryMeta.isHidingHiddenFiles() ) {

View on GitHub (pinned to f3058517a1)