{"record":{"id":"1c476f7d774331b8","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-slave-server-with-id-idslaveserver","errorCode":null,"errorMessage":"Unable to load slave server with id [idSlaveServer]","messagePattern":"Unable to load slave server with id \\[idSlaveServer\\]","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java","lineNumber":1939,"sourceCode":"  }\n\n  @Override\n  public SlaveServer loadSlaveServer( ObjectId idSlaveServer, String versionId ) throws KettleException {\n    readWriteLock.readLock().lock();\n    try {\n      NodeRepositoryFileData\n        data =\n        pur.getDataAtVersionForRead( idSlaveServer.getId(), versionId, NodeRepositoryFileData.class );\n      RepositoryFile file = null;\n      if ( versionId != null ) {\n        file = pur.getFileAtVersion( idSlaveServer.getId(), versionId );\n      } else {\n        file = pur.getFileById( idSlaveServer.getId() );\n      }\n\n      return slaveTransformer.assemble( file, data, pur.getVersionSummary( idSlaveServer.getId(), versionId ) );\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to load slave server with id [\" + idSlaveServer + \"]\", e );\n    } finally {\n      readWriteLock.readLock().unlock();\n    }\n  }\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;","sourceCodeStart":1921,"sourceCodeEnd":1957,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java#L1921-L1957","documentation":"PurRepository.loadSlaveServer(idSlaveServer, versionId, ignoreErrors) retrieves the slave-server file, its version summary, and assembles it via slaveTransformer; any exception in that chain is wrapped in this KettleException.","triggerScenarios":"Calling loadSlaveServer with a stale/deleted ObjectId, an invalid versionId, a broken repository connection, or data that slaveTransformer cannot assemble.","commonSituations":"Slave server removed on the server while its id is still cached locally; ids taken from a different repository; session expiry making getFileById fail; upgrade-related data format changes.","solutions":["Check e.getCause() for the true failure (not-found vs connection vs transform).","Refresh the id via getSlaveServerIDs()/getSlaveServers() and reload.","Retry with versionId = null for the latest version.","Reconnect to the repository and verify the slave server still exists."],"exampleFix":"// before\nSlaveServer ss = repo.loadSlaveServer(staleId, verId, false);\n// after\ntry {\n  SlaveServer ss = repo.loadSlaveServer(staleId, null, false);\n} catch (KettleException e) {\n  log.warn(\"slave server \" + staleId + \" load failed: \" + e.getCause());\n  ss = null;\n}","handlingStrategy":"try-catch","validationCode":"// verify the object still exists before loading\nboolean present = Arrays.asList(repo.getSlaveServerIDs(dirId)).contains(id);","typeGuard":"boolean loadable(ObjectId id) { return id != null && id.getId() != null && !id.getId().isEmpty(); }","tryCatchPattern":"try { return repo.loadSlaveServer(id, null, false); } catch (KettleException e) { log.warn(\"slave server load failed: \", e.getCause()); return null; }","preventionTips":["Refresh ids from getSlaveServerIDs before load","Reconnect if the session may have expired","Handle deleted slave servers gracefully with null fallbacks"],"tags":["kettle","repository","pur","load","slave-server"],"backgroundTag":"entity-not-found","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"}