TechnitiumSoftware/DnsServer · error · DnsWebServiceException

No such node exists in the Cluster by name: {nodeName}

Error message

No such node exists in the Cluster by name: {nodeName}

What it means

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.

Source

Thrown at DnsServerCore/DnsWebService.cs:2371

                            //proxy to primary node
                            ClusterNode primaryNode = _clusterManager.GetPrimaryNode();
                            await primaryNode.ProxyRequest(context, session.User.Username);
                            return;
                        }

                        break;

                    case ClusterNodeType.Secondary:
                        //this api must be called on current node
                        break;

                    default:
                        //this api can be called on any specified node
                        string nodeName = request.GetQueryOrForm("node", null);
                        if (!string.IsNullOrEmpty(nodeName) && (nodeName != "cluster"))
                        {
                            if (!_clusterManager.TryGetClusterNode(nodeName, out ClusterNode node))
                                throw new DnsWebServiceException("No such node exists in the Cluster by name: " + nodeName);

                            if (node.State != ClusterNodeState.Self)
                            {
                                //validate user session before proxying request
                                if (!TryValidateSession(context, out UserSession session))
                                    throw new InvalidTokenWebServiceException("Invalid token or session expired.");

                                //proxy request to the specified cluster node
                                await node.ProxyRequest(context, session.User.Username);
                                return;
                            }
                        }

                        break;
                }
            }

            bool needsJsonResponseObject;

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. List current cluster nodes (cluster status API/UI) and use an existing node name.
  2. Remove the ?node= parameter so the call is handled locally / on the proper node type.
  3. Re-add or re-register the missing node if it should exist.
  4. Update client/automation configuration to the correct node name.

Example fix

null
Defensive patterns

Strategy: validation

Validate before calling

// Validate node name against the live cluster before adding ?node=
var nodes = await GetClusterNodesAsync();
if (!string.IsNullOrEmpty(nodeName) && nodeName != "cluster" && !nodes.Contains(nodeName))
    throw new ArgumentException($"Unknown cluster node: {nodeName}");

Type guard

null

Try / catch

null

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13). Data as JSON: /api/errors/b53437d9d744948a. Report an issue: GitHub.