fix(clustermgr): fix update node info

with #1000596325

Signed-off-by: tangdeyi <tangdeyi@oppo.com>
This commit is contained in:
tangdeyi 2026-01-08 20:03:01 +08:00 committed by 梁曟風
parent 44ff52987e
commit 8d37f14b22
2 changed files with 17 additions and 9 deletions

View File

@ -128,30 +128,36 @@ func TestNodeUpdate(t *testing.T) {
require.NoError(t, err)
require.Equal(t, nodeID, proto.NodeID(1))
info, err := testClusterClient.NodeInfo(ctx, 1)
oldInfo, err := testClusterClient.NodeInfo(ctx, 1)
require.NoError(t, err)
// update node
info := *oldInfo
info.NodeSetID = 0
info.Status = 0
info.Host = "127.0.0.1:9110"
info.Rack = "newRack"
nodeID, err = testClusterClient.AddNode(ctx, info)
nodeID, err = testClusterClient.AddNode(ctx, &info)
require.NoError(t, err)
require.Equal(t, nodeID, proto.NodeID(1))
info1, err := testClusterClient.NodeInfo(ctx, 1)
require.NoError(t, err)
require.Equal(t, info, info1)
require.NotEqual(t, oldInfo, info1)
info1.Host = nodeInfo.Host
info1.Rack = nodeInfo.Rack
require.Equal(t, oldInfo, info1)
// update not exist node
info.NodeID = proto.NodeID(100)
info.Host = "127.0.0.1:1111"
_, err = testClusterClient.AddNode(ctx, info)
_, err = testClusterClient.AddNode(ctx, &info)
require.Error(t, err)
// update node idc not allowed
info.NodeID = proto.NodeID(1)
info.Idc = testService.IDC[1]
_, err = testClusterClient.AddNode(ctx, info)
_, err = testClusterClient.AddNode(ctx, &info)
require.Error(t, err)
}

View File

@ -532,12 +532,14 @@ func (d *manager) AllowNodeIPChange(ctx context.Context, info *clustermgr.NodeIn
dropping = oldNodeItem.dropping
return nil
})
oldNodeInfo.Host = info.Host
oldNodeInfo.Rack = info.Rack
if oldNodeInfo != *info || oldNodeInfo.Status == proto.NodeStatusDropped || dropping {
if oldNodeInfo.Status == proto.NodeStatusDropped || dropping {
return false
}
return true
oldNodeInfo.Host = info.Host
oldNodeInfo.Rack = info.Rack
oldNodeInfo.NodeSetID = 0
oldNodeInfo.Status = 0
return oldNodeInfo == *info
}
func (d *manager) ValidateNodeInfo(ctx context.Context, info *clustermgr.NodeInfo) error {