{"record":{"id":"450e8ab6ade804f6","repo":"pentaho/pentaho-kettle","slug":"unable-to-read-shared-objects-from-repository","errorCode":null,"errorMessage":"Unable to read shared objects from repository","messagePattern":"Unable to read shared objects from repository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java","lineNumber":1961,"sourceCode":"  }\n\n  protected Map<RepositoryObjectType, List<? extends SharedObjectInterface<?>>> loadAndCacheSharedObjects(\n    final boolean deepCopy ) throws KettleException {\n    readWriteLock.readLock().lock();\n    sharedObjectsLock.writeLock().lock();\n    try {\n      if ( sharedObjectsByType == null ) {\n        sharedObjectsByType =\n          new EnumMap<RepositoryObjectType, List<? extends SharedObjectInterface<?>>>( RepositoryObjectType.class );\n        // Slave Servers are referenced by Cluster Schemas so they must be loaded first\n        readSharedObjects( sharedObjectsByType, RepositoryObjectType.DATABASE, RepositoryObjectType.PARTITION_SCHEMA,\n          RepositoryObjectType.SLAVE_SERVER, RepositoryObjectType.CLUSTER_SCHEMA );\n      }\n      return deepCopy ? deepCopy( sharedObjectsByType ) : sharedObjectsByType;\n    } catch ( Exception e ) {\n      sharedObjectsByType = null;\n      // TODO i18n\n      throw new KettleException( \"Unable to read shared objects from repository\", e ); //$NON-NLS-1$\n    } finally {\n      sharedObjectsLock.writeLock().unlock();\n      readWriteLock.readLock().unlock();\n    }\n  }\n\n  protected Map<RepositoryObjectType, List<? extends SharedObjectInterface<?>>>  loadAndCacheSharedObjects()\n    throws KettleException {\n    return loadAndCacheSharedObjects( true );\n  }\n\n  private Map<RepositoryObjectType, List<? extends SharedObjectInterface<?>>> deepCopy(\n    Map<RepositoryObjectType, List<? extends SharedObjectInterface<?>>> orig ) throws KettleException {\n    Map<RepositoryObjectType, List<? extends SharedObjectInterface<?>>>\n      copy =\n      new EnumMap<RepositoryObjectType, List<? extends SharedObjectInterface<?>>>( RepositoryObjectType.class );\n    sharedObjectsLock.writeLock().lock();\n    try {","sourceCodeStart":1943,"sourceCodeEnd":1979,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java#L1943-L1979","documentation":"PurRepository.readAllSharedObjects() loads and caches all shared object types (partition schemas, cluster schemas, slave servers) and wraps any failure in this KettleException, nulling the shared-object cache. Any failure in the underlying loads (connection, missing files, transform errors) surfaces here.","triggerScenarios":"Calling getSharedObjects()/readAllSharedObjects() when any of the underlying shared-object loads fail: repository disconnected, shared-object folders missing or unreadable, or individual object assembly throws.","commonSituations":"Repository session expired before reading shared objects; restricted user cannot read shared-object folders; corrupted or legacy-format shared objects after a Pentaho server upgrade; network failure mid-load.","solutions":["Inspect e.getCause() to see which shared-object load failed first.","Reconnect to the repository (connect) and retry readAllSharedObjects.","Verify the repository user can read the folders holding cluster schemas, partition schemas, and slave servers.","If data-format issues follow an upgrade, check Pentaho client/server version compatibility."],"exampleFix":"// before\nSharedObjects so = repo.getSharedObjects();\n// after\ntry {\n  SharedObjects so = repo.getSharedObjects();\n} catch (KettleException e) {\n  log.error(\"shared objects read failed: \" + e.getCause(), e);\n  repo.disconnect();\n  repo.connect(user, pass); // reconnect then retry once\n  SharedObjects so2 = repo.getSharedObjects();\n}","handlingStrategy":"retry","validationCode":"if (repo == null || !repo.isConnected()) throw new IllegalStateException(\"repository not connected\");","typeGuard":"boolean usable(Repository repo) { try { return repo != null && repo.isConnected(); } catch (Throwable t) { return false; } }","tryCatchPattern":"try { return repo.getSharedObjects(); } catch (KettleException e) { log.error(\"cause: \", e.getCause()); reconnect(); return repo.getSharedObjects(); }","preventionTips":["Reconnect on failure and retry once","Ensure the user can read all shared-object folders","Check version compatibility after Pentaho upgrades","Monitor getCause() to find which shared-object type fails"],"tags":["kettle","repository","pur","shared-objects"],"backgroundTag":"api-request-failed","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"}