mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
fix(master): Set tobeOffline flag before create migrate plan.#1000138733
Signed-off-by: Wu Huocheng <wuhuocheng@oppo.com>
This commit is contained in:
parent
37d1816f4f
commit
f4bcdc21c6
@ -512,6 +512,13 @@ func (m *Server) offlineMetaNode(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
metaNode.ToBeOffline = true
|
||||
if err = m.cluster.syncUpdateMetaNode(metaNode); err != nil {
|
||||
log.LogErrorf("syncUpdateMetaNode err: %v", err)
|
||||
sendErrReply(w, r, newErrHTTPReply(err))
|
||||
return
|
||||
}
|
||||
|
||||
if metaNode.MetaPartitionCount == 0 {
|
||||
err = m.cluster.DoMetaNodeOffline(offLineAddr)
|
||||
if err != nil {
|
||||
|
||||
@ -1522,6 +1522,19 @@ func (c *Cluster) DoMetaNodeOffline(offLineAddr string) (err error) {
|
||||
metaNode.MigrateLock.Lock()
|
||||
defer metaNode.MigrateLock.Unlock()
|
||||
|
||||
if !metaNode.ToBeOffline {
|
||||
err = fmt.Errorf("metaNode[%s] is not to be offline", metaNode.Addr)
|
||||
log.LogErrorf(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
mps := c.getAllMetaPartitionsByMetaNode(metaNode.Addr)
|
||||
if len(mps) != 0 {
|
||||
err = fmt.Errorf("metaNode[%s] has persistence meta partitions (%d)", metaNode.Addr, len(mps))
|
||||
log.LogErrorf(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
if err = c.syncDeleteMetaNode(metaNode); err != nil {
|
||||
msg := fmt.Sprintf("action[offlineMetaNode], clusterID[%v] node[%v] synDelMetaNode failed,err[%s]",
|
||||
c.Name, offLineAddr, err.Error())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user