Add cluster version fix #11233, #11254, #11265

This commit is contained in:
Wenjia Zhang 2019-10-16 13:27:07 -07:00
parent a038dc6464
commit fc5f94144b
4 changed files with 10 additions and 10 deletions

View File

@ -103,11 +103,7 @@ func TestReleaseUpgrade(t *testing.T) {
} }
// expect upgraded cluster version // expect upgraded cluster version
ver := version.Version if err := cURLGet(cx.epc, cURLReq{endpoint: "/metrics", expected: fmt.Sprintf(`etcd_cluster_version{cluster_version="%s"} 1`, version.Cluster(version.Version)), metricsURLScheme: cx.cfg.metricsURLScheme}); err != nil {
if strings.HasSuffix(ver, "+git") {
ver = strings.Replace(ver, "+git", "", 1)
}
if err := cURLGet(cx.epc, cURLReq{endpoint: "/metrics", expected: fmt.Sprintf(`etcd_cluster_version{cluster_version="%s"} 1`, ver), metricsURLScheme: cx.cfg.metricsURLScheme}); err != nil {
cx.t.Fatalf("failed get with curl (%v)", err) cx.t.Fatalf("failed get with curl (%v)", err)
} }
} }

View File

@ -369,6 +369,7 @@ func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*semver.Version
} else { } else {
plog.Noticef("set the initial cluster version to %v", version.Cluster(ver.String())) plog.Noticef("set the initial cluster version to %v", version.Cluster(ver.String()))
} }
oldVer := c.version
c.version = ver c.version = ver
mustDetectDowngrade(c.version) mustDetectDowngrade(c.version)
if c.store != nil { if c.store != nil {
@ -377,7 +378,10 @@ func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*semver.Version
if c.be != nil { if c.be != nil {
mustSaveClusterVersionToBackend(c.be, ver) mustSaveClusterVersionToBackend(c.be, ver)
} }
ClusterVersionMetrics.With(prometheus.Labels{"cluster_version": ver.String()}).Set(1) if oldVer != nil {
ClusterVersionMetrics.With(prometheus.Labels{"cluster_version": version.Cluster(oldVer.String())}).Set(0)
}
ClusterVersionMetrics.With(prometheus.Labels{"cluster_version": version.Cluster(ver.String())}).Set(1)
onSet(ver) onSet(ver)
} }

View File

@ -591,7 +591,7 @@ func (s *EtcdServer) start() {
s.readNotifier = newNotifier() s.readNotifier = newNotifier()
if s.ClusterVersion() != nil { if s.ClusterVersion() != nil {
plog.Infof("starting server... [version: %v, cluster version: %v]", version.Version, version.Cluster(s.ClusterVersion().String())) plog.Infof("starting server... [version: %v, cluster version: %v]", version.Version, version.Cluster(s.ClusterVersion().String()))
membership.ClusterVersionMetrics.With(prometheus.Labels{"cluster_version": s.ClusterVersion().String()}).Set(1) membership.ClusterVersionMetrics.With(prometheus.Labels{"cluster_version": version.Cluster(s.ClusterVersion().String())}).Set(1)
} else { } else {
plog.Infof("starting server... [version: %v, cluster version: to_be_decided]", version.Version) plog.Infof("starting server... [version: %v, cluster version: to_be_decided]", version.Version)
} }

View File

@ -19,7 +19,7 @@ import (
"strings" "strings"
"testing" "testing"
"go.etcd.io/etcd/version" "github.com/coreos/etcd/version"
) )
func TestV3MetricsSecure(t *testing.T) { func TestV3MetricsSecure(t *testing.T) {
@ -50,7 +50,7 @@ func metricsTest(cx ctlCtx) {
if strings.HasSuffix(ver, "+git") { if strings.HasSuffix(ver, "+git") {
ver = strings.Replace(ver, "+git", "", 1) ver = strings.Replace(ver, "+git", "", 1)
} }
if err := cURLGet(cx.epc, cURLReq{endpoint: "/metrics", expected: fmt.Sprintf(`etcd_cluster_version{cluster_version="%s"} 1`, ver), metricsURLScheme: cx.cfg.metricsURLScheme}); err != nil { if err := cURLGet(cx.epc, cURLReq{endpoint: "/metrics", expected: fmt.Sprintf(`etcd_cluster_version{cluster_version="%s"} 1`, version.Cluster(version.Version)), metricsURLScheme: cx.cfg.metricsURLScheme}); err != nil {
cx.t.Fatalf("failed get with curl (%v)", err) cx.t.Fatalf("failed get with curl (%v)", err)
} }
if err := cURLGet(cx.epc, cURLReq{endpoint: "/health", expected: `{"health":"true"}`, metricsURLScheme: cx.cfg.metricsURLScheme}); err != nil { if err := cURLGet(cx.epc, cURLReq{endpoint: "/health", expected: `{"health":"true"}`, metricsURLScheme: cx.cfg.metricsURLScheme}); err != nil {