Merge pull request #3159 from shichanglin5/_duplicateUUID

perf: Optimized volume handling duplicateUUID logic to avoid quitting…
This commit is contained in:
Chris Lu 2022-06-09 18:01:02 -07:00 committed by GitHub
commit 37da689319
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 6 deletions

View File

@ -119,16 +119,30 @@ func (vs *VolumeServer) doHeartbeat(masterAddress pb.ServerAddress, grpcDialOpti
return
}
if len(in.DuplicatedUuids) > 0 {
var duplictedDir []string
var duplicatedDir []string
foundDuplicate := false
duplicateSet := make(map[string]struct{})
for _, loc := range vs.store.Locations {
directoryUuid := loc.DirectoryUuid
if _, exists := duplicateSet[directoryUuid]; !exists {
duplicateSet[directoryUuid] = struct{}{}
} else {
foundDuplicate = true
}
for _, uuid := range in.DuplicatedUuids {
if uuid == loc.DirectoryUuid {
duplictedDir = append(duplictedDir, loc.Directory)
if uuid == directoryUuid {
duplicatedDir = append(duplicatedDir, loc.Directory)
}
}
}
glog.Errorf("Shut down Volume Server due to duplicated volume directories: %v", duplictedDir)
os.Exit(1)
if foundDuplicate {
glog.Errorf("Shut down Volume Server due to duplicated volume directories: %v", duplicatedDir)
os.Exit(1)
} else {
glog.Warningf("Receive response of duplicated volume directories: %v, ignored(the check found no duplicates)", duplicatedDir)
}
}
if in.GetVolumeSizeLimit() != 0 && vs.store.GetVolumeSizeLimit() != in.GetVolumeSizeLimit() {
vs.store.SetVolumeSizeLimit(in.GetVolumeSizeLimit())

View File

@ -293,7 +293,6 @@ func (v *Volume) collectStatus() (maxFileKey types.NeedleId, datFileSize int64,
fileCount = uint64(v.nm.FileCount())
deletedCount = uint64(v.nm.DeletedCount())
deletedSize = v.nm.DeletedSize()
fileCount = uint64(v.nm.FileCount())
return
}