|
@ -4,16 +4,17 @@ import ( |
|
|
"context" |
|
|
"context" |
|
|
"flag" |
|
|
"flag" |
|
|
"fmt" |
|
|
"fmt" |
|
|
|
|
|
"io" |
|
|
|
|
|
"path/filepath" |
|
|
|
|
|
"strconv" |
|
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/pb" |
|
|
"github.com/seaweedfs/seaweedfs/weed/pb" |
|
|
"github.com/seaweedfs/seaweedfs/weed/storage/needle" |
|
|
"github.com/seaweedfs/seaweedfs/weed/storage/needle" |
|
|
"github.com/seaweedfs/seaweedfs/weed/storage/needle_map" |
|
|
"github.com/seaweedfs/seaweedfs/weed/storage/needle_map" |
|
|
"github.com/seaweedfs/seaweedfs/weed/storage/types" |
|
|
"github.com/seaweedfs/seaweedfs/weed/storage/types" |
|
|
"golang.org/x/exp/slices" |
|
|
"golang.org/x/exp/slices" |
|
|
"google.golang.org/grpc" |
|
|
"google.golang.org/grpc" |
|
|
"io" |
|
|
|
|
|
"path/filepath" |
|
|
|
|
|
"strconv" |
|
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
|
|
|
"github.com/seaweedfs/seaweedfs/weed/operation" |
|
|
"github.com/seaweedfs/seaweedfs/weed/operation" |
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/master_pb" |
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/master_pb" |
|
@ -316,7 +317,7 @@ func (c *commandVolumeFixReplication) fixOneUnderReplicatedVolume(commandEnv *Co |
|
|
|
|
|
|
|
|
if !takeAction { |
|
|
if !takeAction { |
|
|
// adjust volume count
|
|
|
// adjust volume count
|
|
|
dst.dataNode.DiskInfos[replica.info.DiskType].VolumeCount++ |
|
|
|
|
|
|
|
|
addVolumeCount(dst.dataNode.DiskInfos[replica.info.DiskType], 1) |
|
|
break |
|
|
break |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -350,7 +351,7 @@ func (c *commandVolumeFixReplication) fixOneUnderReplicatedVolume(commandEnv *Co |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// adjust volume count
|
|
|
// adjust volume count
|
|
|
dst.dataNode.DiskInfos[replica.info.DiskType].VolumeCount++ |
|
|
|
|
|
|
|
|
addVolumeCount(dst.dataNode.DiskInfos[replica.info.DiskType], 1) |
|
|
break |
|
|
break |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -361,6 +362,14 @@ func (c *commandVolumeFixReplication) fixOneUnderReplicatedVolume(commandEnv *Co |
|
|
return nil |
|
|
return nil |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func addVolumeCount(info *master_pb.DiskInfo, count int) { |
|
|
|
|
|
if info == nil { |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
info.VolumeCount += int64(count) |
|
|
|
|
|
info.FreeVolumeCount -= int64(count) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
func keepDataNodesSorted(dataNodes []location, diskType types.DiskType) { |
|
|
func keepDataNodesSorted(dataNodes []location, diskType types.DiskType) { |
|
|
fn := capacityByFreeVolumeCount(diskType) |
|
|
fn := capacityByFreeVolumeCount(diskType) |
|
|
slices.SortFunc(dataNodes, func(a, b location) int { |
|
|
slices.SortFunc(dataNodes, func(a, b location) int { |
|
|