mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
feat(master): when traversing the dp decommission queue, add a check for the deletion status of its associated volume.
close: #1000329496 Signed-off-by: shuqiang-zheng <zhengshuqiang@oppo.com>
This commit is contained in:
parent
a89871ce64
commit
37db5cf3b1
@ -66,7 +66,8 @@ func (c *Cluster) checkDiskRecoveryProgress() {
|
||||
log.LogInfof("[checkDiskRecoveryProgress] dp(%v) decommission pause", partitionID)
|
||||
continue
|
||||
}
|
||||
_, err = c.getVol(partition.VolName)
|
||||
var vol *Vol
|
||||
vol, err = c.getVol(partition.VolName)
|
||||
if err != nil {
|
||||
Warn(c.Name, fmt.Sprintf("checkDiskRecoveryProgress clusterID[%v],partitionID[%v] vol(%s) is not exist",
|
||||
c.Name, partitionID, partition.VolName))
|
||||
@ -81,6 +82,12 @@ func (c *Cluster) checkDiskRecoveryProgress() {
|
||||
log.LogWarnf("action[checkDiskRecoveryProgress] dp %v maybe deleted", partition.PartitionID)
|
||||
continue
|
||||
}
|
||||
if (vol.status() == proto.VolStatusMarkDelete && !vol.Forbidden) ||
|
||||
(vol.status() == proto.VolStatusMarkDelete && vol.Forbidden && time.Until(vol.DeleteExecTime) <= 0) {
|
||||
partition.SetDecommissionStatus(DecommissionSuccess, "checkDiskRecoveryProgress_volMarkDeleteCheck", "")
|
||||
log.LogWarnf("action[checkDiskRecoveryProgress] vol(%v) corresponding to dp(%v) has been marked for deletion", partition.VolName, partition.PartitionID)
|
||||
continue
|
||||
}
|
||||
if partition.IsDiscard {
|
||||
partition.SetDecommissionStatus(DecommissionSuccess, "checkDiskRecoveryProgress_discardCheck", "")
|
||||
log.LogWarnf("[checkDiskRecoveryProgress] dp(%v) is discard, decommission successfully", partition.PartitionID)
|
||||
|
||||
@ -2322,6 +2322,20 @@ func (l *DecommissionDataPartitionList) startTraverse() {
|
||||
|
||||
func updateDecommissionWeight(dps []*DataPartition, c *Cluster) {
|
||||
for _, dp := range dps {
|
||||
vol, err := c.getVol(dp.VolName)
|
||||
if err != nil {
|
||||
log.LogWarnf("action[DecommissionListTraverse] dp[%v] get vol[%v] failed", dp.decommissionInfo(), dp.VolName)
|
||||
dp.DecommissionErrorMessage = err.Error()
|
||||
dp.markRollbackFailed(false, "traverDecommissionList_updateDecommissionWeight_volMarkDeleteCheck", err.Error())
|
||||
continue
|
||||
}
|
||||
if (vol.status() == proto.VolStatusMarkDelete && !vol.Forbidden) ||
|
||||
(vol.status() == proto.VolStatusMarkDelete && vol.Forbidden && time.Until(vol.DeleteExecTime) <= 0) {
|
||||
dp.SetDecommissionStatus(DecommissionSuccess, "traverDecommissionList_updateDecommissionWeight_volMarkDeleteCheck", "")
|
||||
log.LogWarnf("action[DecommissionListTraverse] skip dp(%v) since vol(%v) has been marked for deletion", dp.PartitionID, dp.VolName)
|
||||
continue
|
||||
}
|
||||
|
||||
if dp.IsDiscard {
|
||||
dp.SetDecommissionStatus(DecommissionSuccess, "traverDecommissionList_updateDecommissionWeight_discardCheck", "")
|
||||
log.LogWarnf("action[DecommissionListTraverse] skip dp(%v) discard(%v)", dp.PartitionID, dp.IsDiscard)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user