mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
fix(master): if the decommission fails and requires retry, set the status to 'mark' only at the end of the decommission function
Signed-off-by: chihe <chihe@oppo.com>
This commit is contained in:
parent
ac54435341
commit
a3fb3d301b
@ -73,7 +73,7 @@ func formatClusterView(cv *proto.ClusterView, cn *proto.ClusterNodeInfo, cp *pro
|
||||
sb.WriteString(fmt.Sprintf(" DataPartitionTimeout : %v\n", cv.DpTimeout))
|
||||
sb.WriteString(fmt.Sprintf(" volDeletionDelayTime : %v h\n", cv.VolDeletionDelayTimeHour))
|
||||
sb.WriteString(fmt.Sprintf(" EnableAutoDecommission : %v\n", cv.EnableAutoDecommission))
|
||||
sb.WriteString(fmt.Sprintf(" AutoDecommissionDiskIntervak : %v\n", cv.AutoDecommissionDiskInterval))
|
||||
sb.WriteString(fmt.Sprintf(" AutoDecommissionDiskInterval : %v\n", cv.AutoDecommissionDiskInterval))
|
||||
sb.WriteString(fmt.Sprintf(" EnableAutoDpMetaRepair : %v\n", cv.EnableAutoDpMetaRepair))
|
||||
sb.WriteString(fmt.Sprintf(" AutoDpMetaRepairParallelCnt : %v\n", cv.AutoDpMetaRepairParallelCnt))
|
||||
sb.WriteString(fmt.Sprintf(" MarkDiskBrokenThreshold : %v\n", strutil.FormatPercent(cv.MarkDiskBrokenThreshold)))
|
||||
|
||||
@ -1348,11 +1348,11 @@ func (partition *DataPartition) IsDoingDecommission() bool {
|
||||
func (partition *DataPartition) TryToDecommission(c *Cluster) bool {
|
||||
if !partition.IsMarkDecommission() {
|
||||
log.LogWarnf("action[TryToDecommission] failed dp[%v] status expected markDecommission[%v]",
|
||||
partition.PartitionID, atomic.LoadUint32(&partition.DecommissionStatus))
|
||||
partition.decommissionInfo(), atomic.LoadUint32(&partition.DecommissionStatus))
|
||||
return false
|
||||
}
|
||||
|
||||
log.LogDebugf("action[TryToDecommission] dp[%v]", partition.PartitionID)
|
||||
log.LogDebugf("action[TryToDecommission] dp[%v]", partition.decommissionInfo())
|
||||
|
||||
return partition.Decommission(c)
|
||||
}
|
||||
@ -1490,15 +1490,7 @@ errHandler:
|
||||
log.LogWarnf("action[decommissionDataPartition] partitionID:%v is stopped", partition.PartitionID)
|
||||
return true
|
||||
}
|
||||
|
||||
partition.DecommissionRetry++
|
||||
if partition.DecommissionRetry >= defaultDecommissionRetryLimit {
|
||||
partition.SetDecommissionStatus(DecommissionFail)
|
||||
} else {
|
||||
partition.SetDecommissionStatus(markDecommission) // retry again
|
||||
partition.ReleaseDecommissionToken(c)
|
||||
}
|
||||
|
||||
// if need rollback, set to fail
|
||||
// do not reset DecommissionDstAddr outside the rollback operation, as it may cause rollback failure
|
||||
if partition.DecommissionNeedRollback {
|
||||
@ -1519,6 +1511,8 @@ errHandler:
|
||||
partition.DecommissionDstAddr = ""
|
||||
log.LogWarnf("action[decommissionDataPartition] partitionID:%v reset DecommissionDstAddr", partition.PartitionID)
|
||||
}
|
||||
partition.ReleaseDecommissionToken(c)
|
||||
partition.SetDecommissionStatus(markDecommission)
|
||||
}
|
||||
}
|
||||
msg = fmt.Sprintf("clusterID[%v] info[%v] offline failed:%v consume[%v]seconds",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user