mirror of
https://github.com/cubefs/cubefs.git
synced 2026-08-02 02:00:56 +00:00
fix(master): fix possible deadlocks during dp decommission.
close:#1000231787 Signed-off-by: shuqiang-zheng <zhengshuqiang@oppo.com>
This commit is contained in:
parent
44cd11860e
commit
8f8d7d6f5a
@ -1684,9 +1684,17 @@ func (partition *DataPartition) getRetryTimesRecordByDiskPath(diskPath string) (
|
||||
}
|
||||
|
||||
func (partition *DataPartition) deleteInvalidRetryTimesRecord() {
|
||||
partition.DecommissionDiskRetryMapMutex.Lock()
|
||||
defer partition.DecommissionDiskRetryMapMutex.Unlock()
|
||||
for key := range partition.DecommissionDiskRetryMap {
|
||||
partition.DecommissionDiskRetryMapMutex.RLock()
|
||||
if len(partition.DecommissionDiskRetryMap) == 0 {
|
||||
partition.DecommissionDiskRetryMapMutex.RUnlock()
|
||||
return
|
||||
}
|
||||
diskRetryMap := make(map[string]int)
|
||||
for disk, retryTimes := range partition.DecommissionDiskRetryMap {
|
||||
diskRetryMap[disk] = retryTimes
|
||||
}
|
||||
partition.DecommissionDiskRetryMapMutex.RUnlock()
|
||||
for key := range diskRetryMap {
|
||||
arr := strings.Split(key, "_")
|
||||
if len(arr) == 2 {
|
||||
addr := arr[0]
|
||||
@ -1695,7 +1703,9 @@ func (partition *DataPartition) deleteInvalidRetryTimesRecord() {
|
||||
continue
|
||||
}
|
||||
}
|
||||
partition.DecommissionDiskRetryMapMutex.Lock()
|
||||
delete(partition.DecommissionDiskRetryMap, key)
|
||||
partition.DecommissionDiskRetryMapMutex.Unlock()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user