Skip to content

TiUP deploys TiDB Dashboard with multiple PD URLs, but Dashboard only supports one PD endpoint #1920

Description

@mayjiang0203

Bug Report

Please answer these questions before submitting your issue. Thanks!

What did you do?

What did you expect to see?

What did you see instead?
When deploying a standalone TiDB Dashboard with TiUP to a cluster that has multiple PD nodes, TiUP generates a --pd argument containing all PD URLs:

--pd="http://127.0.0.1:23791,http://127.0.0.1:23792,http://127.0.0.1:23793" 

However, TiDB Dashboard treats the whole value as one PD endpoint. It passes the complete comma-separated string to the etcd client instead of splitting it into multiple endpoints.
As a result, Dashboard cannot connect to PD.

Dashboard logs show:

dial tcp: address 127.0.0.1:23791,http:: too many colons in address

It also repeatedly logs:

Failed to load dynamic config from etcd
error="context deadline exceeded"

Dashboard is shown as Up by tiup cluster display because its HTTP port is listening, but PD-dependent APIs fail.

What version of TiDB Dashboard are you using (./tidb-dashboard --version)?
[2026/08/19 14:24:37.760 +08:00] [INFO] [version.go:33] ["TiDB Dashboard started"] [internal-version=v8.5.1] [standalone=Yes] [pd-version=N/A] [build-time="2025-01-10 06:50:53"] [build-git-hash=5d1f7280d5d8a7f97b5791b31c7ee300ff31229b]

**Root Cause
TiUP collects all PD client URLs and joins them with commas before generating the Dashboard startup script:

PD: strings.Join(pds, ","),

Dashboard accepts --pd as a single string and creates the etcd client with:

Endpoints: []string{config.PDEndPoint},

Dashboard does not split the comma-separated value into separate endpoints.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions