MCPcopy
hub / github.com/grafana/dskit / discoverMembers

Method discoverMembers

kv/memberlist/memberlist_client.go:926–950  ·  view source on GitHub ↗

Provides a dns-based member discovery to join a memberlist cluster w/o knowning members' addresses upfront. May both return some addresses and an error in case of a partial resolution.

(ctx context.Context, members []string)

Source from the content-addressed store, hash-verified

924// Provides a dns-based member discovery to join a memberlist cluster w/o knowning members' addresses upfront.
925// May both return some addresses and an error in case of a partial resolution.
926func (m *KV) discoverMembers(ctx context.Context, members []string) ([]string, error) {
927 if len(members) == 0 {
928 return nil, nil
929 }
930
931 var ms, resolve []string
932
933 for _, member := range members {
934 if strings.Contains(member, "+") {
935 resolve = append(resolve, member)
936 } else {
937 // No DNS SRV record to lookup, just append member
938 ms = append(ms, member)
939 }
940 }
941
942 err := m.provider.Resolve(ctx, resolve)
943 if err != nil {
944 level.Warn(m.logger).Log("msg", "failed to resolve members", "addrs", strings.Join(resolve, ","), "err", err)
945 }
946
947 ms = append(ms, m.provider.Addresses()...)
948
949 return ms, err
950}
951
952// Like discoverMembers() but retries (up to 10 times) on error.
953func (m *KV) discoverMembersWithRetries(ctx context.Context, members []string) ([]string, error) {

Callers 1

Calls 3

ResolveMethod · 0.65
AddressesMethod · 0.65
LogMethod · 0.45

Tested by

no test coverage detected