Merge pull request #19637 from ahrtr/upgrade_refactor_20250321

minor refactor DowngradeUpgradeMembersByID to not block on waiting fo…
This commit is contained in:
Benjamin Wang 2025-03-21 18:33:04 +00:00 committed by GitHub
commit 5e272463f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -25,6 +25,7 @@ import (
"github.com/coreos/go-semver/semver"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
"golang.org/x/sync/errgroup"
pb "go.etcd.io/etcd/api/v3/etcdserverpb"
"go.etcd.io/etcd/api/v3/version"
@ -145,6 +146,8 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess
opString = "downgrading"
newExecPath = BinPath.EtcdLastRelease
}
g := new(errgroup.Group)
for _, memberID := range membersToChange {
member := clus.Procs[memberID]
if member.Config().ExecPath == newExecPath {
@ -156,10 +159,15 @@ func DowngradeUpgradeMembersByID(t *testing.T, lg *zap.Logger, clus *EtcdProcess
}
member.Config().ExecPath = newExecPath
lg.Info("Restarting member", zap.String("member", member.Config().Name))
err := member.Start(t.Context())
if err != nil {
return err
// We shouldn't block on waiting for the member to be ready,
// otherwise it will be blocked forever if other members are
// not started yet.
g.Go(func() error {
return member.Start(t.Context())
})
}
if err := g.Wait(); err != nil {
return err
}
t.Log("Waiting health interval to make sure the leader propagates version to new processes")