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
- 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.
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
- 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.
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
- No such user exists: {actingUsername}
- AddressFamily not supported.
- Invalid token or session expired.
- Web service TLS certificate path cannot be null or empty.
- Web service TLS certificate path length cannot exceed 255 ch
AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13).
Data as JSON: /api/errors/b53437d9d744948a.
Report an issue: GitHub.