diff --git a/etcdserver/membership/cluster.go b/etcdserver/membership/cluster.go index 1568cec5685a..ba5c5411d5fc 100644 --- a/etcdserver/membership/cluster.go +++ b/etcdserver/membership/cluster.go @@ -369,6 +369,7 @@ func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*semver.Version } else { plog.Noticef("set the initial cluster version to %v", version.Cluster(ver.String())) } + oldVer := c.version c.version = ver mustDetectDowngrade(c.version) if c.store != nil { @@ -377,8 +378,11 @@ func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*semver.Version if c.be != nil { mustSaveClusterVersionToBackend(c.be, ver) } - ClusterVersionMetrics.With(prometheus.Labels{"cluster_version": ver.String()}).Set(1) - onSet(ver) + 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) } func (c *RaftCluster) IsReadyToAddNewMember() bool { diff --git a/tests/e2e/metrics_test.go b/tests/e2e/metrics_test.go index 7a32f003147c..aade2718f152 100644 --- a/tests/e2e/metrics_test.go +++ b/tests/e2e/metrics_test.go @@ -19,7 +19,7 @@ import ( "strings" "testing" - "go.etcd.io/etcd/version" + "github.com/coreos/etcd/version" ) func TestV3MetricsSecure(t *testing.T) { @@ -50,7 +50,7 @@ func metricsTest(cx ctlCtx) { 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 { + 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) } if err := cURLGet(cx.epc, cURLReq{endpoint: "/health", expected: `{"health":"true"}`, metricsURLScheme: cx.cfg.metricsURLScheme}); err != nil {