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

  1. Verify the shared/cluster-schema folder exists and the user has read access.
  2. Inspect e.getCause() for the underlying service failure.
  3. Re-authenticate to the PUR repository and retry.
  4. 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

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


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 );
    }
  }

  @Override

View on GitHub (pinned to f3058517a1)