TechnitiumSoftware/DnsServer · critical · InvalidDataException

DNS Server Cluster config version not supported.

Error message

DNS Server Cluster config version not supported.

What it means

Thrown by ClusterManager.ReadConfigFrom(Stream) when the version byte (read after the 'CL' magic) does not match any supported case (currently only version 1 is implemented). This is a forward-compatibility guard: a newer server wrote a config format this build cannot parse, so it refuses rather than misread fields. WriteConfigTo always writes version 1.

Source

Thrown at DnsServerCore/Cluster/ClusterManager.cs:396

                    Dictionary<int, ClusterNode> clusterNodes = null;
                    int count = bR.ReadByte();

                    if (count > 0)
                    {
                        clusterNodes = new Dictionary<int, ClusterNode>(count);

                        for (int i = 0; i < count; i++)
                        {
                            ClusterNode node = new ClusterNode(this, bR);
                            clusterNodes.TryAdd(node.Id, node);
                        }
                    }

                    _clusterNodes = clusterNodes;
                    break;

                default:
                    throw new InvalidDataException("DNS Server Cluster config version not supported.");
            }
        }

        private void WriteConfigTo(Stream s)
        {
            BinaryWriter bW = new BinaryWriter(s);

            bW.Write(Encoding.ASCII.GetBytes("CL")); //format
            bW.Write((byte)1); //version

            bW.Write(_clusterDomain);
            bW.Write(_heartbeatRefreshIntervalSeconds);
            bW.Write(_heartbeatRetryIntervalSeconds);
            bW.Write(_configRefreshIntervalSeconds);
            bW.Write(_configRetryIntervalSeconds);
            s.WriteDateTime(_configLastSynced);

            IReadOnlyDictionary<int, ClusterNode> clusterNodes = _clusterNodes;

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. Upgrade all cluster nodes to the same (newer) server version that understands the config format.
  2. Re-initialize the cluster from scratch after aligning versions, deleting the incompatible config.
  3. Keep all cluster members on the exact same Technitium version to avoid format mismatches.
Defensive patterns

Strategy: try-catch

Try / catch

try
{
    clusterManager.Load();
}
catch (InvalidDataException ex) when (ex.Message.Contains("Cluster config version not supported"))
{
    logger.LogError(ex, "Cluster config version unsupported; upgrade all nodes to the same version.");
    NotifyAdminUpgradeRequired();
}

Prevention

When it happens

Trigger: Loading a cluster config that was saved by a newer Technitium DNS Server release which bumped the cluster config version, while the running binary only understands version 1.

Common situations: Downgrading the server after a cluster was configured on a newer version; copying a config between nodes running different server versions; a mixed-version cluster during a rolling upgrade.

Related errors


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