tikv / tikv/pd

Client provides addresses of current leader and members to callback function of upper layer

Open
#7,063 2 comments 0 reactions 0 assignees View on GitHub
type/enhancement
Dominant language
Go
Stars
1.2k
Forks
783
Avg merge
5d 21h
Merged PRs (30d)
36

Description

## Enhancement Task

Currently PD client has the functionality to maintain the latest leader and members in `pdServiceDiscovery`. It's helpful that this functionality can help caller know latest PD leader/member information when caller access them directly rather than use Client interface. One example is lightning directly use leader address to use HTTP API.

So I propose these new methods to Client interface

```golang
type Client interface {
...
ToLeader(ctx context.Context, fn func(leaderAddr string) error) error
ToAtLeastOneMember(ctx context.Context, fn func(addrs []string) error) error
}
```

And caller can use it like

```golang
// check PD version
err := pdCli.ToAtLeastOneMember(ctx, func (addrs []string) error {
for _, addr := range addrs {
err := tls.WithHost(addr).GetJSON(ctx, "/pd/api/v1/version", &rawVersion)
...
}
...
})
```

When the callback function fails for network problem, PD client can also trigger internal leader/member updating.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.