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
- Inspect e.getCause() to distinguish not-found from transform/data failure.
- Reload with a fresh id from getPartitionSchemaIDs() instead of a cached id.
- Retry with versionId = null to get the latest version.
- 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
- Invalidate id caches on reconnect
- Check cause chain for not-found vs data errors
- Verify versioning service health after upgrades
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
- Unable to load cluster schema with id [idClusterSchema]
- Unable to load slave server with id [idSlaveServer]
- Unable to get all partition schema IDs
- Unable to get all partition schema names
- Unable to get all slave server IDs
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)