{"record":{"id":"6d30608bb4fa9497","repo":"pentaho/pentaho-kettle","slug":"unable-to-get-all-cluster-schema-ids","errorCode":null,"errorMessage":"Unable to get all cluster schema IDs","messagePattern":"Unable to get all cluster schema IDs","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java","lineNumber":997,"sourceCode":"    }\n  }\n\n  @Override\n  public ObjectId getClusterID( String name ) throws KettleException {\n    return getObjectID( name, RepositoryObjectType.CLUSTER_SCHEMA );\n  }\n\n  @Override\n  public ObjectId[] getClusterIDs( boolean includeDeleted ) throws KettleException {\n    try {\n      List<RepositoryFile> children = getAllFilesOfType( null, RepositoryObjectType.CLUSTER_SCHEMA, includeDeleted );\n      List<ObjectId> ids = new ArrayList<ObjectId>();\n      for ( RepositoryFile file : children ) {\n        ids.add( new StringObjectId( file.getId().toString() ) );\n      }\n      return ids.toArray( new ObjectId[ 0 ] );\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to get all cluster schema IDs\", e );\n    }\n  }\n\n  @Override\n  public String[] getClusterNames( boolean includeDeleted ) throws KettleException {\n    try {\n      List<RepositoryFile> children = getAllFilesOfType( null, RepositoryObjectType.CLUSTER_SCHEMA, includeDeleted );\n      List<String> names = new ArrayList<String>();\n      for ( RepositoryFile file : children ) {\n        names.add( file.getTitle() );\n      }\n      return names.toArray( new String[ 0 ] );\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to get all cluster schema names\", e );\n    }\n  }\n\n  @Override","sourceCodeStart":979,"sourceCodeEnd":1015,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java#L979-L1015","documentation":"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.","triggerScenarios":"Calling getClusterIDs() when the underlying children listing of the cluster schemas folder throws — missing folder, permission failure, or PUR service error.","commonSituations":"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.","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."],"exampleFix":"// before\nObjectId[] ids = repo.getClusterIDs();\n// after\ntry {\n  ObjectId[] ids = repo.getClusterIDs();\n} catch (KettleException e) {\n  log.error(\"Cluster ID listing failed: {}\", e.getCause());\n  ids = new ObjectId[0];\n}","handlingStrategy":"fallback","validationCode":"if (!repo.isConnected()) throw new KettleException(\"Repository not connected\");","typeGuard":"null","tryCatchPattern":"try {\n  ids = repo.getClusterIDs();\n} catch (KettleException e) {\n  log.warn(\"Cluster IDs unavailable: {}\", e.getCause());\n  ids = new ObjectId[0];\n}","preventionTips":["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."],"tags":["repository","cluster-schema","pentaho","listing"],"backgroundTag":"empty-result-set","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}