Add a method to export membership info to v2 store from RaftCluster

Signed-off-by: Geeta Gharpure <geetagh@amazon.com>
This commit is contained in:
Geeta Gharpure
2023-06-23 20:42:35 +00:00
parent 0ba8b0fb16
commit e5b7dde17e
5 changed files with 125 additions and 18 deletions

View File

@ -854,3 +854,30 @@ func ValidateMaxLearnerConfig(maxLearners int, members []*Member, scaleUpLearner
return nil
}
func (c *RaftCluster) Store(store v2store.Store) {
c.Lock()
defer c.Unlock()
verifyNoMembersInStore(c.lg, store)
for _, m := range c.members {
mustSaveMemberToStore(c.lg, store, m)
if m.ClientURLs != nil {
mustUpdateMemberAttrInStore(c.lg, store, m)
}
c.lg.Info(
"snapshot storing member",
zap.String("id", m.ID.String()),
zap.Strings("peer-urls", m.PeerURLs),
zap.Bool("is-learner", m.IsLearner),
)
}
for id, _ := range c.removed {
//We do not need to delete the member since the store is empty.
mustAddToRemovedMembersInStore(c.lg, store, id)
}
if c.version != nil {
mustSaveClusterVersionToStore(c.lg, store, c.version)
}
}