{"record":{"id":"b53437d9d744948a","repo":"TechnitiumSoftware/DnsServer","slug":"no-such-node-exists-in-the-cluster-by-name-noden","errorCode":null,"errorMessage":"No such node exists in the Cluster by name: {nodeName}","messagePattern":"No such node exists in the Cluster by name: (.+?)","errorType":"http","errorClass":"DnsWebServiceException","httpStatus":null,"severity":"error","filePath":"DnsServerCore/DnsWebService.cs","lineNumber":2371,"sourceCode":"                            //proxy to primary node\n                            ClusterNode primaryNode = _clusterManager.GetPrimaryNode();\n                            await primaryNode.ProxyRequest(context, session.User.Username);\n                            return;\n                        }\n\n                        break;\n\n                    case ClusterNodeType.Secondary:\n                        //this api must be called on current node\n                        break;\n\n                    default:\n                        //this api can be called on any specified node\n                        string nodeName = request.GetQueryOrForm(\"node\", null);\n                        if (!string.IsNullOrEmpty(nodeName) && (nodeName != \"cluster\"))\n                        {\n                            if (!_clusterManager.TryGetClusterNode(nodeName, out ClusterNode node))\n                                throw new DnsWebServiceException(\"No such node exists in the Cluster by name: \" + nodeName);\n\n                            if (node.State != ClusterNodeState.Self)\n                            {\n                                //validate user session before proxying request\n                                if (!TryValidateSession(context, out UserSession session))\n                                    throw new InvalidTokenWebServiceException(\"Invalid token or session expired.\");\n\n                                //proxy request to the specified cluster node\n                                await node.ProxyRequest(context, session.User.Username);\n                                return;\n                            }\n                        }\n\n                        break;\n                }\n            }\n\n            bool needsJsonResponseObject;","sourceCodeStart":2353,"sourceCodeEnd":2389,"githubUrl":"https://github.com/TechnitiumSoftware/DnsServer/blob/d0484b6c1e7439cdc53d67d81e9c876cda2ad756/DnsServerCore/DnsWebService.cs#L2353-L2389","documentation":"DnsWebServiceException thrown in WebServiceApiMiddleware default arm when the 'node' query/form parameter names a cluster node that TryGetClusterNode cannot find. The cluster-routing logic resolves a target node by name; an unknown name (not 'cluster' and not a registered node) is rejected before any proxying.","triggerScenarios":"A client adds ?node=<name> (or form field) to a cluster-aware API call where <name> is neither 'cluster' nor a node registered with the ClusterManager. Typo, stale node name after a node was removed, or probing.","commonSituations":"Node renamed or decommissioned but client still sends old name; typo in automation/script; mismatch between cluster config and client configuration; cluster not fully rejoined after rejoin.","solutions":["List current cluster nodes (cluster status API/UI) and use an existing node name.","Remove the ?node= parameter so the call is handled locally / on the proper node type.","Re-add or re-register the missing node if it should exist.","Update client/automation configuration to the correct node name."],"exampleFix":"null","handlingStrategy":"validation","validationCode":"// Validate node name against the live cluster before adding ?node=\nvar nodes = await GetClusterNodesAsync();\nif (!string.IsNullOrEmpty(nodeName) && nodeName != \"cluster\" && !nodes.Contains(nodeName))\n    throw new ArgumentException($\"Unknown cluster node: {nodeName}\");","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Fetch the cluster node list before sending ?node=.","Keep client-side cluster config in sync with the actual topology.","Drop the ?node= parameter when locality does not matter."],"tags":["dns-server","technitium","cluster","node-routing","input-validation","csharp"],"backgroundTag":null,"analyzedSha":"d0484b6c1e7439cdc53d67d81e9c876cda2ad756","analyzedAt":"2026-08-13T22:57:35.508Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}