pentaho/pentaho-kettle · error · KettleException

Unable to load partition schema with id [partitionSchemaId]

Error message

Unable to load partition schema with id [partitionSchemaId]

What it means

PurRepository.loadPartitionSchema(idPartitionSchema, versionId, ignoreErrors) fetches the partition-schema file and version summary and assembles it via partitionSchemaTransformer; any failure is wrapped in this KettleException.

Solutions

  1. Inspect e.getCause() to distinguish not-found from transform/data failure.
  2. Reload with a fresh id from getPartitionSchemaIDs() instead of a cached id.
  3. Retry with versionId = null to get the latest version.
  4. Reconnect to the repository and confirm the object exists server-side.

Example fix

// before
PartitionSchema ps = repo.loadPartitionSchema(cachedId, verId, false);
// after
try {
  PartitionSchema ps = repo.loadPartitionSchema(cachedId, null, false);
} catch (KettleException e) {
  log.warn("partition schema load failed: " + e.getCause());
  ps = null;
}
Defensive patterns

Strategy: try-catch

Validate before calling

// verify the object still exists before loading
boolean present = Arrays.asList(repo.getPartitionSchemaIDs(dirId)).contains(id);

Type guard

boolean loadable(ObjectId id) { return id != null && id.getId() != null && !id.getId().isEmpty(); }

Try / catch

try { return repo.loadPartitionSchema(id, null, false); } catch (KettleException e) { log.warn("partition schema load failed: ", e.getCause()); return null; }

Prevention

When it happens

Trigger: Calling loadPartitionSchema with an id whose file was deleted or belongs to another repository, an invalid versionId, or when stored node data cannot be assembled by the transformer.

Common situations: Caching a partition schema id across repository reconnects; the schema was deleted/moved on the server; versioning service failure; legacy data format incompatibility after a Pentaho upgrade.

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

Appendix: source

Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:1917

  }

  @Override
  public PartitionSchema loadPartitionSchema( ObjectId partitionSchemaId, String versionId ) throws KettleException {
    readWriteLock.readLock().lock();
    try {
      NodeRepositoryFileData data =
        pur.getDataAtVersionForRead( partitionSchemaId.getId(), versionId, NodeRepositoryFileData.class );
      RepositoryFile file = null;
      if ( versionId != null ) {
        file = pur.getFileAtVersion( partitionSchemaId.getId(), versionId );
      } else {
        file = pur.getFileById( partitionSchemaId.getId() );
      }

      return partitionSchemaTransformer.assemble( file, data, pur.getVersionSummary( partitionSchemaId.getId(),
        versionId ) );
    } catch ( Exception e ) {
      throw new KettleException( "Unable to load partition schema with id [" + partitionSchemaId + "]", e );
    } finally {
      readWriteLock.readLock().unlock();
    }
  }

  @Override
  public SlaveServer loadSlaveServer( ObjectId idSlaveServer, String versionId ) throws KettleException {
    readWriteLock.readLock().lock();
    try {
      NodeRepositoryFileData
        data =
        pur.getDataAtVersionForRead( idSlaveServer.getId(), versionId, NodeRepositoryFileData.class );
      RepositoryFile file = null;
      if ( versionId != null ) {
        file = pur.getFileAtVersion( idSlaveServer.getId(), versionId );
      } else {
        file = pur.getFileById( idSlaveServer.getId() );
      }

View on GitHub (pinned to f3058517a1)