11.2. 404 After Test Connection Succeeds

Problem : You receive a 404 after "test-connection" was successful

This situation happens when the Dashboard cannot resolve the domain names from returned by the API endpoint api/v8/manager/cluster/topology

For example:

{
    "payloadType": "ClusterTopologyPayload",
    "payloadVersion": "1",
    "payload": {
        "topology": "CLUSTERED_PRIMARY",
        "name": "oulu",
        "datasources": [
            {
                "name": "db21",
                /* the value of "host" must be resolvable by Dashboard's dns */
                "host": "db21", 
                "role": "master"
            },
            {
                "name": "db22",
                /* the value of "host" must be resolvable by Dashboard's dns */
                "host": "db22",
                "role": "slave"
            },
            {
                "name": "db23",
                /* the value of "host" must be resolvable by Dashboard's dns */
                "host": "db23",
                "role": "witness"
            }
        ],
        "routers": [...]
    }
}

If the Dashboard cannot obtain an IP address for the node name located above, the load balancing functionality breaks down. To resolve the issue:

  1. Identify all hostnames returned by the REST API endpoint api/v8/manager/cluster/topology

  2. SSH to the Dashboard container

  3. Install the DNS Tools to get access to the dig command:

    shell> apt upgrade;
    shell> apt install dnsutils;
  4. Test the hostname resolution for each hostname you collected in step 1. If successful you will get ';; ANSWER SECTION:'

    shell> dig db21;
    "
    ; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> db21
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30152
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1232
    ; COOKIE: ab4ead051ab4fa5d (echoed)
    ;; QUESTION SECTION:
    ;db21.        IN  A
    
    ;; ANSWER SECTION:
    db21.     5 IN  A XX.XXX.XX.XXX" # <---- note valid ip in the answer.
    "
    
    ;; Query time: 4 msec
    ;; SERVER: XX.XX.X.XXX#53(XX.XX.X.XX) (UDP)
    ;; WHEN: Wed Apr 09 12:13:03 UTC 2025
    ;; MSG SIZE  rcvd: 65
    "

    Example of a failed dns resolution:

    shell> dig db20;
    "
    ; <<>> DiG 9.18.30-0ubuntu0.24.04.2-Ubuntu <<>> db20
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 12636
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1232
    ; COOKIE: ad741d4ba38cc0a7 (echoed)
    ;; QUESTION SECTION:
    ;db20.        IN  A"

    Note how the dig never got a valid IP address in the ';; ANSWER SECTION:' like in the success example.

Make sure that all of the hosts returned by the API topology endpoint can be resolved before proceeding further. Once all hostnames are resolvable, re-add the cluster to the Dashboard or reload the topology using the reload action or by making a small change to it, such as changing the first host.