Skip to content

Commit de5e4a5

Browse files
committed
Assume v3 store is always not nil
Signed-off-by: Marek Siarkowicz <[email protected]>
1 parent cc90010 commit de5e4a5

File tree

5 files changed

+27
-36
lines changed

5 files changed

+27
-36
lines changed

server/etcdserver/api/membership/cluster.go

+10-18
Original file line numberDiff line numberDiff line change
@@ -257,17 +257,9 @@ func (c *RaftCluster) SetVersionChangedNotifier(n *notify.Notifier) {
257257
}
258258

259259
func (c *RaftCluster) UnsafeLoad() {
260-
if c.be != nil {
261-
c.version = c.be.ClusterVersionFromBackend()
262-
c.members, c.removed = c.be.MustReadMembersFromBackend()
263-
} else {
264-
c.version = clusterVersionFromStore(c.lg, c.v2store)
265-
c.members, c.removed = membersFromStore(c.lg, c.v2store)
266-
}
267-
268-
if c.be != nil {
269-
c.downgradeInfo = c.be.DowngradeInfoFromBackend()
270-
}
260+
c.version = c.be.ClusterVersionFromBackend()
261+
c.members, c.removed = c.be.MustReadMembersFromBackend()
262+
c.downgradeInfo = c.be.DowngradeInfoFromBackend()
271263
}
272264

273265
func (c *RaftCluster) Recover(onSet func(*zap.Logger, *semver.Version)) {
@@ -415,7 +407,7 @@ func (c *RaftCluster) AddMember(m *Member, shouldApplyV3 ShouldApplyV3) {
415407
setIsLearnerMetric(m)
416408
}
417409

418-
if c.be != nil && shouldApplyV3 {
410+
if shouldApplyV3 {
419411
c.be.MustSaveMemberToBackend(m)
420412

421413
c.members[m.ID] = m
@@ -448,7 +440,7 @@ func (c *RaftCluster) RemoveMember(id types.ID, shouldApplyV3 ShouldApplyV3) {
448440
if c.v2store != nil {
449441
mustDeleteMemberFromStore(c.lg, c.v2store, id)
450442
}
451-
if c.be != nil && shouldApplyV3 {
443+
if shouldApplyV3 {
452444
c.be.MustDeleteMemberFromBackend(id)
453445

454446
m, ok := c.members[id]
@@ -492,7 +484,7 @@ func (c *RaftCluster) UpdateAttributes(id types.ID, attr Attributes, shouldApply
492484
if c.v2store != nil {
493485
mustUpdateMemberAttrInStore(c.lg, c.v2store, m)
494486
}
495-
if c.be != nil && shouldApplyV3 {
487+
if shouldApplyV3 {
496488
c.be.MustSaveMemberToBackend(m)
497489
}
498490
return
@@ -531,7 +523,7 @@ func (c *RaftCluster) PromoteMember(id types.ID, shouldApplyV3 ShouldApplyV3) {
531523
isLearner.Set(0)
532524
}
533525

534-
if c.be != nil && shouldApplyV3 {
526+
if shouldApplyV3 {
535527
c.members[id].RaftAttributes.IsLearner = false
536528
c.updateMembershipMetric(id, true)
537529
c.be.MustSaveMemberToBackend(c.members[id])
@@ -560,7 +552,7 @@ func (c *RaftCluster) UpdateRaftAttributes(id types.ID, raftAttr RaftAttributes,
560552
m.RaftAttributes = raftAttr
561553
mustUpdateMemberInStore(c.lg, c.v2store, &m)
562554
}
563-
if c.be != nil && shouldApplyV3 {
555+
if shouldApplyV3 {
564556
c.members[id].RaftAttributes = raftAttr
565557
c.be.MustSaveMemberToBackend(c.members[id])
566558

@@ -619,7 +611,7 @@ func (c *RaftCluster) SetVersion(ver *semver.Version, onSet func(*zap.Logger, *s
619611
if c.v2store != nil {
620612
mustSaveClusterVersionToStore(c.lg, c.v2store, ver)
621613
}
622-
if c.be != nil && shouldApplyV3 {
614+
if shouldApplyV3 {
623615
c.be.MustSaveClusterVersionToBackend(ver)
624616
}
625617
if oldVer != nil {
@@ -821,7 +813,7 @@ func (c *RaftCluster) SetDowngradeInfo(d *serverversion.DowngradeInfo, shouldApp
821813
c.Lock()
822814
defer c.Unlock()
823815

824-
if c.be != nil && shouldApplyV3 {
816+
if shouldApplyV3 {
825817
c.be.MustSaveDowngradeToBackend(d)
826818
}
827819

server/etcdserver/api/membership/cluster_test.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,12 @@ func TestNodeToMember(t *testing.T) {
661661
}
662662

663663
func newTestCluster(tb testing.TB, membs []*Member) *RaftCluster {
664-
c := &RaftCluster{lg: zaptest.NewLogger(tb), members: make(map[types.ID]*Member), removed: make(map[types.ID]bool)}
664+
c := &RaftCluster{
665+
lg: zaptest.NewLogger(tb),
666+
members: make(map[types.ID]*Member),
667+
removed: make(map[types.ID]bool),
668+
be: newMembershipBackend(),
669+
}
665670
for _, m := range membs {
666671
c.members[m.ID] = m
667672
}

server/etcdserver/api/membership/storev2.go

-15
Original file line numberDiff line numberDiff line change
@@ -183,18 +183,3 @@ func MemberStoreKey(id types.ID) string {
183183
func MemberAttributesStorePath(id types.ID) string {
184184
return path.Join(MemberStoreKey(id), attributesSuffix)
185185
}
186-
187-
func clusterVersionFromStore(lg *zap.Logger, st v2store.Store) *semver.Version {
188-
e, err := st.Get(path.Join(storePrefix, "version"), false, false)
189-
if err != nil {
190-
if isKeyNotFound(err) {
191-
return nil
192-
}
193-
lg.Panic(
194-
"failed to get cluster version from store",
195-
zap.String("path", path.Join(storePrefix, "version")),
196-
zap.Error(err),
197-
)
198-
}
199-
return semver.Must(semver.NewVersion(*e.Node.Value))
200-
}

server/etcdserver/apply/uber_applier_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ func defaultUberApplier(t *testing.T) UberApplier {
4545
})
4646

4747
cluster := membership.NewCluster(lg)
48+
cluster.SetBackend(schema.NewMembershipBackend(lg, be))
4849
cluster.AddMember(&membership.Member{ID: memberID}, true)
4950
lessor := lease.NewLessor(lg, be, cluster, lease.LessorConfig{})
5051
kv := mvcc.NewStore(lg, be, lessor, mvcc.StoreConfig{})

tests/e2e/v2store_deprecation_test.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ import (
3535
"go.etcd.io/etcd/server/v3/etcdserver/api/membership"
3636
"go.etcd.io/etcd/server/v3/etcdserver/api/snap"
3737
"go.etcd.io/etcd/server/v3/etcdserver/api/v2store"
38+
betesting "go.etcd.io/etcd/server/v3/storage/backend/testing"
39+
"go.etcd.io/etcd/server/v3/storage/schema"
3840
"go.etcd.io/etcd/tests/v3/framework/config"
3941
"go.etcd.io/etcd/tests/v3/framework/e2e"
4042
)
@@ -256,16 +258,22 @@ func assertSnapshotsMatch(tb testing.TB, firstDataDir, secondDataDir string, pat
256258
require.NoError(tb, err)
257259
secondSnapshot, err := snap.Read(lg, secondFiles[i])
258260
require.NoError(tb, err)
259-
assertMembershipEqual(tb, openSnap(patch(firstSnapshot.Data)), openSnap(patch(secondSnapshot.Data)))
261+
assertMembershipEqual(tb, lg, openSnap(patch(firstSnapshot.Data)), openSnap(patch(secondSnapshot.Data)))
260262
}
261263
}
262264

263-
func assertMembershipEqual(tb testing.TB, firstStore v2store.Store, secondStore v2store.Store) {
265+
func assertMembershipEqual(tb testing.TB, lg *zap.Logger, firstStore v2store.Store, secondStore v2store.Store) {
264266
rc1 := membership.NewCluster(zaptest.NewLogger(tb))
265267
rc1.SetStore(firstStore)
268+
be1, _ := betesting.NewDefaultTmpBackend(tb)
269+
defer betesting.Close(tb, be1)
270+
rc1.SetBackend(schema.NewMembershipBackend(lg, be1))
266271
rc1.Recover(func(lg *zap.Logger, v *semver.Version) {})
267272

268273
rc2 := membership.NewCluster(zaptest.NewLogger(tb))
274+
be2, _ := betesting.NewDefaultTmpBackend(tb)
275+
defer betesting.Close(tb, be2)
276+
rc2.SetBackend(schema.NewMembershipBackend(lg, be2))
269277
rc2.SetStore(secondStore)
270278
rc2.Recover(func(lg *zap.Logger, v *semver.Version) {})
271279

0 commit comments

Comments
 (0)