{"record":{"id":"7f6bfb9651976c95","repo":"theonedev/onedev","slug":"active-server-not-found-for-project-id-s","errorCode":null,"errorMessage":"Active server not found for project id: %s","messagePattern":"Active server not found for project id: (.+?)","errorType":"validation","errorClass":"ExplicitException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/service/impl/DefaultProjectService.java","lineNumber":1169,"sourceCode":"\t@Override\n\tpublic String getFavoriteQuery(User user) {\n\t\tif (user != null && !user.getProjectQueryPersonalization().getQueries().isEmpty()) {\n\t\t\treturn user.getProjectQueryPersonalization().getQueries().iterator().next().getQuery();\n\t\t} else {\n\t\t\tGlobalProjectSetting projectSetting = settingService.getProjectSetting();\n\t\t\tif (!projectSetting.getNamedQueries().isEmpty())\n\t\t\t\treturn projectSetting.getNamedQueries().iterator().next().getQuery();\n\t\t}\n\t\treturn null;\n\t}\n\n\t@Override\n\tpublic String getActiveServer(Long projectId, boolean mustExist) {\n\t\tvar activeServer = activeServers.get(projectId);\n\t\tif (activeServer != null)\n\t\t\treturn activeServer;\n\t\telse if (mustExist)\n\t\t\tthrow new ExplicitException(\"Active server not found for project id: \" + projectId);\n\t\telse\n\t\t\treturn null;\n\t}\n\t\n\t@Override\n\tpublic Set<Long> getActiveIds() {\n\t\tvar localServer = clusterService.getLocalServerAddress();\n\t\treturn new HashSet<>(activeServers.project(Map.Entry::getKey, entry -> entry.getValue().equals(localServer)));\n\t}\n\n\t@Override\n\tpublic Map<String, Collection<Long>> groupByActiveServers(Collection<Long> projectIds) {\n\t\tMap<String, Collection<Long>> projectIdsByServer = new HashMap<>();\n\t\tfor (var projectId: projectIds) {\n\t\t\tvar activeServer = activeServers.get(projectId);\n\t\t\tif (activeServer != null) {\n\t\t\t\tvar projectIdsOnServer = projectIdsByServer.computeIfAbsent(activeServer, k -> new HashSet<>());\n\t\t\t\tprojectIdsOnServer.add(projectId);","sourceCodeStart":1151,"sourceCodeEnd":1187,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/service/impl/DefaultProjectService.java#L1151-L1187","documentation":"OneDev throws this ExplicitException from ProjectService.getActiveServer when no active server is registered for the given project id and mustExist is true. Active servers track which cluster node is currently handling a project's operations (e.g. for job executors in a cluster); querying one for a project that no node is serving is treated as an error.","triggerScenarios":"Calling ProjectService.getActiveServer(projectId, true) when the project has never been activated on any server, or its server was stopped/decommissioned, or the project id is wrong.","commonSituations":"Cluster environments where a node handling the project went down; calls made from a different node before project activation has propagated; stale references to deleted/moved projects; scripts polling active servers for a project that is not currently running anything.","solutions":["Verify the project id is correct and the project exists.","Ensure the project is activated/running on a cluster node (e.g. trigger its job or open it so a server claims it).","Call getActiveServer(projectId, false) if a null result is acceptable, and handle the missing-server case in caller code.","In a cluster, check node health and restart failed nodes so projects get reactivated."],"exampleFix":"// before\nString server = projectService.getActiveServer(projectId, true); // throws if absent\n// after\nString server = projectService.getActiveServer(projectId, false);\nif (server == null) {\n    // handle: project not active on any node\n    return;\n}","handlingStrategy":"fallback","validationCode":"// Only ask for a mandatory server if the project is known active\nSet<Long> activeIds = projectService.getActiveIds();\nif (!activeIds.contains(projectId)) {\n    // project not active on any node; skip or activate first\n    return;\n}\nString server = projectService.getActiveServer(projectId, true);","typeGuard":"function hasActiveServer(projectService, projectId) {\n  return projectService.getActiveIds().has(projectId);\n}","tryCatchPattern":"try {\n    String server = projectService.getActiveServer(projectId, true);\n} catch (ExplicitException e) {\n    logger.warn(\"No active server for project {}: {}\", projectId, e.getMessage());\n    // fall back to local handling or re-activate the project\n}","preventionTips":["Call getActiveServer(projectId, false) when absence is a normal case","In clusters, monitor node health so projects are reactivated after failures","Validate project ids before querying active servers","Treat 'no active server' as an expected state in polling/automation loops"],"tags":["cluster","project","server-registry","state"],"backgroundTag":"resource-not-found","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}