pentaho/pentaho-kettle · error · KettleException
Unable to get all cluster schema IDs
Error message
Unable to get all cluster schema IDs
What it means
getClusterIDs failed: it lists the repository folder children of the cluster-schema area and maps each file id to a StringObjectId; any exception in listing is wrapped as this KettleException. Deleted cluster schemas are included per legacy JCR behavior.
Solutions
- Verify the shared/cluster-schema folder exists and the user has read access.
- Inspect e.getCause() for the underlying service failure.
- Re-authenticate to the PUR repository and retry.
- Initialize shared objects (connect once as admin) if folders are missing on a fresh repository.
Example fix
// before
ObjectId[] ids = repo.getClusterIDs();
// after
try {
ObjectId[] ids = repo.getClusterIDs();
} catch (KettleException e) {
log.error("Cluster ID listing failed: {}", e.getCause());
ids = new ObjectId[0];
} Defensive patterns
Strategy: fallback
Validate before calling
if (!repo.isConnected()) throw new KettleException("Repository not connected"); Type guard
null
Try / catch
try {
ids = repo.getClusterIDs();
} catch (KettleException e) {
log.warn("Cluster IDs unavailable: {}", e.getCause());
ids = new ObjectId[0];
} Prevention
- Connect as admin once on a fresh repository to create shared folders.
- Grant read access to shared resources for service accounts.
- Retry after re-authentication on session expiry.
When it happens
Trigger: Calling getClusterIDs() when the underlying children listing of the cluster schemas folder throws — missing folder, permission failure, or PUR service error.
Common situations: First-time connection where shared-object folders have not been created yet; user lacking read access to shared cluster schemas; server outage or session expiry.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- Unable to get all cluster schema names
- Unable to get list of object names from directory [
- AbsSecurityProvider.ERROR_0002_UNABLE_TO_ACCESS_IS_ALLOWED
- AddSequenceMeta.Exception.UnableToReadStepInfo
- AddSequenceMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/6d30608bb4fa9497.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java:997
}
}
@Override
public ObjectId getClusterID( String name ) throws KettleException {
return getObjectID( name, RepositoryObjectType.CLUSTER_SCHEMA );
}
@Override
public ObjectId[] getClusterIDs( boolean includeDeleted ) throws KettleException {
try {
List<RepositoryFile> children = getAllFilesOfType( null, RepositoryObjectType.CLUSTER_SCHEMA, includeDeleted );
List<ObjectId> ids = new ArrayList<ObjectId>();
for ( RepositoryFile file : children ) {
ids.add( new StringObjectId( file.getId().toString() ) );
}
return ids.toArray( new ObjectId[ 0 ] );
} catch ( Exception e ) {
throw new KettleException( "Unable to get all cluster schema IDs", e );
}
}
@Override
public String[] getClusterNames( boolean includeDeleted ) throws KettleException {
try {
List<RepositoryFile> children = getAllFilesOfType( null, RepositoryObjectType.CLUSTER_SCHEMA, includeDeleted );
List<String> names = new ArrayList<String>();
for ( RepositoryFile file : children ) {
names.add( file.getTitle() );
}
return names.toArray( new String[ 0 ] );
} catch ( Exception e ) {
throw new KettleException( "Unable to get all cluster schema names", e );
}
}
@OverrideView on GitHub (pinned to f3058517a1)