Skip to content

Commit 73f175a

Browse files
etcd clusters must negotiate to reach v3 mode, wait
Otherwise we can start making calls to the cluster while it is still in v2 mode.
1 parent b4652ac commit 73f175a

File tree

1 file changed

+6
-0
lines changed
  • pkg/cmd/server/etcd/etcdserver

1 file changed

+6
-0
lines changed

pkg/cmd/server/etcd/etcdserver/run.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/coreos/etcd/embed"
99
"github.com/coreos/etcd/pkg/osutil"
1010
"github.com/coreos/etcd/pkg/types"
11+
"github.com/coreos/go-semver/semver"
1112
"github.com/golang/glog"
1213

1314
configapi "github.com/openshift/origin/pkg/cmd/server/api"
@@ -74,6 +75,11 @@ func RunEtcd(etcdServerConfig *configapi.EtcdConfig) {
7475

7576
select {
7677
case <-e.Server.ReadyNotify():
78+
// embedded servers must negotiate to reach v3 mode, this ensures we loop until that happens
79+
glog.V(4).Infof("Waiting for etcd to reach cluster version 3.0.0")
80+
for min := semver.Must(semver.NewVersion("3.0.0")); e.Server.ClusterVersion().LessThan(*min); {
81+
time.Sleep(25 * time.Millisecond)
82+
}
7783
glog.Infof("Started etcd at %s", etcdServerConfig.Address)
7884
case <-time.After(60 * time.Second):
7985
glog.Warning("etcd took too long to start, stopped")

0 commit comments

Comments
 (0)