MCPcopy
hub / github.com/etcd-io/etcd / getDowngradeEnabled

Function getDowngradeEnabled

server/etcdserver/cluster_util.go:384–434  ·  view source on GitHub ↗

getDowngradeEnabled returns the downgrade enabled status of the given member via its peerURLs. Returns the last error if it fails to get it.

(lg *zap.Logger, m *membership.Member, rt http.RoundTripper, timeout time.Duration)

Source from the content-addressed store, hash-verified

382// getDowngradeEnabled returns the downgrade enabled status of the given member
383// via its peerURLs. Returns the last error if it fails to get it.
384func getDowngradeEnabled(lg *zap.Logger, m *membership.Member, rt http.RoundTripper, timeout time.Duration) (bool, error) {
385 cc := &http.Client{
386 Transport: rt,
387 Timeout: timeout,
388 CheckRedirect: func(req *http.Request, via []*http.Request) error {
389 return http.ErrUseLastResponse
390 },
391 }
392 var (
393 err error
394 resp *http.Response
395 )
396
397 for _, u := range m.PeerURLs {
398 addr := u + DowngradeEnabledPath
399 resp, err = cc.Get(addr)
400 if err != nil {
401 lg.Warn(
402 "failed to reach the peer URL",
403 zap.String("address", addr),
404 zap.String("remote-member-id", m.ID.String()),
405 zap.Error(err),
406 )
407 continue
408 }
409 var b []byte
410 b, err = io.ReadAll(resp.Body)
411 resp.Body.Close()
412 if err != nil {
413 lg.Warn(
414 "failed to read body of response",
415 zap.String("address", addr),
416 zap.String("remote-member-id", m.ID.String()),
417 zap.Error(err),
418 )
419 continue
420 }
421 var enable bool
422 if enable, err = strconv.ParseBool(string(b)); err != nil {
423 lg.Warn(
424 "failed to convert response",
425 zap.String("address", addr),
426 zap.String("remote-member-id", m.ID.String()),
427 zap.Error(err),
428 )
429 continue
430 }
431 return enable, nil
432 }
433 return false, err
434}
435
436func convertToClusterVersion(v string) (*semver.Version, error) {
437 ver, err := semver.NewVersion(v)

Callers 1

Calls 5

GetMethod · 0.95
ReadAllMethod · 0.80
StringMethod · 0.65
ErrorMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…