mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
fix(clustermgr): fix snapshot member nodehost store
with #1000095073 Signed-off-by: tangdeyi <tangdeyi@oppo.com>
This commit is contained in:
parent
d29e116edc
commit
d48ca7debc
@ -54,7 +54,7 @@ func (s *Service) MemberAdd(c *rpc.Context) {
|
||||
}
|
||||
|
||||
var err error
|
||||
mc, err := parseContext(args.NodeHost)
|
||||
mc, err := marshalMemberContext(args.NodeHost)
|
||||
if err != nil {
|
||||
c.RespondError(err)
|
||||
return
|
||||
@ -176,7 +176,7 @@ func (s *Service) checkPeerIDExist(peerID uint64) bool {
|
||||
return found
|
||||
}
|
||||
|
||||
func parseContext(host string) ([]byte, error) {
|
||||
func marshalMemberContext(host string) ([]byte, error) {
|
||||
if host == "" {
|
||||
return nil, apierrors.ErrIllegalArguments
|
||||
}
|
||||
|
||||
@ -168,7 +168,11 @@ func (s *Service) ApplySnapshot(meta raftserver.SnapshotMeta, st raftserver.Snap
|
||||
for _, m := range meta.Mbs {
|
||||
member := base.RaftMember{ID: m.NodeID, Host: m.Host, Learner: m.Learner}
|
||||
if ct := m.GetContext(); ct != nil {
|
||||
member.NodeHost = string(ct)
|
||||
memberContext := &clustermgr.MemberContext{}
|
||||
if err := memberContext.Unmarshal(ct); err != nil {
|
||||
return err
|
||||
}
|
||||
member.NodeHost = memberContext.NodeHost
|
||||
}
|
||||
members = append(members, member)
|
||||
}
|
||||
|
||||
@ -17,6 +17,7 @@ package clustermgr
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/cubefs/cubefs/blobstore/api/clustermgr"
|
||||
"github.com/cubefs/cubefs/blobstore/common/codemode"
|
||||
"github.com/cubefs/cubefs/blobstore/common/raftserver"
|
||||
"github.com/stretchr/testify/require"
|
||||
@ -63,7 +64,11 @@ func TestStateMachine(t *testing.T) {
|
||||
{
|
||||
snapshot, err := srcService.Snapshot()
|
||||
require.NoError(t, err)
|
||||
member := &raftserver.Member{NodeID: 1, Host: "127.0.0.1:65342", Learner: false, Context: []byte("127.0.0.1:10010")}
|
||||
|
||||
memberContext := &clustermgr.MemberContext{NodeHost: "127.0.0.1:10010"}
|
||||
memberContextB, err := memberContext.Marshal()
|
||||
require.NoError(t, err)
|
||||
member := &raftserver.Member{NodeID: 1, Host: "127.0.0.1:65342", Learner: false, Context: memberContextB}
|
||||
members := []*raftserver.Member{member}
|
||||
err = destService.ApplySnapshot(raftserver.SnapshotMeta{Index: snapshot.Index(), Mbs: members}, snapshot)
|
||||
require.NoError(t, err)
|
||||
|
||||
@ -321,7 +321,11 @@ func New(cfg *Config) (*Service, error) {
|
||||
log.Infof("config members: %+v, raftdb members: %+v", cfg.RaftConfig.RaftNodeConfig.Members, members)
|
||||
|
||||
for _, member := range members {
|
||||
m := raftserver.Member{NodeID: member.ID, Host: member.Host, Learner: member.Learner, Context: []byte(member.NodeHost)}
|
||||
mc, err := marshalMemberContext(member.NodeHost)
|
||||
if err != nil {
|
||||
log.Fatalf("marshal MemberContext, err: %v", err)
|
||||
}
|
||||
m := raftserver.Member{NodeID: member.ID, Host: member.Host, Learner: member.Learner, Context: mc}
|
||||
cfg.RaftConfig.ServerConfig.Members = append(cfg.RaftConfig.ServerConfig.Members, m)
|
||||
}
|
||||
raftServer, err := raftserver.NewRaftServer(&cfg.RaftConfig.ServerConfig)
|
||||
|
||||
@ -77,7 +77,7 @@ var testServiceCfg = &Config{
|
||||
TickInterval: 1,
|
||||
ElectionTick: 2,
|
||||
WalDir: os.TempDir() + "/svrraftwal-" + uuid.NewString() + strconv.FormatInt(rand.Int63n(math.MaxInt64), 10),
|
||||
Members: []raftserver.Member{{NodeID: 1, Host: "127.0.0.1:60110", Learner: false}},
|
||||
Members: []raftserver.Member{{NodeID: 1, Host: "127.0.0.1:60110", Learner: false, Context: []byte(`{"node_host": "127.0.0.1:9998"}`)}},
|
||||
|
||||
TickIntervalMs: 20,
|
||||
},
|
||||
@ -244,6 +244,11 @@ func TestNewService(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, testService)
|
||||
|
||||
mc := testService.RaftConfig.ServerConfig.Members[0].Context
|
||||
memberContext := &clustermgr.MemberContext{}
|
||||
err = memberContext.Unmarshal(mc)
|
||||
require.NoError(t, err)
|
||||
|
||||
testService.report(context.Background())
|
||||
testService.metricReport(context.Background())
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user