EC volume supports expiration and displays expiration message when executing volume.list (#5895)
* ec volume expire * volume.list show DestroyTime * comments * code optimization --------- Co-authored-by: xuwenfeng <xuwenfeng1@zto.com>
This commit is contained in:
@@ -336,6 +336,9 @@ func (s *Store) CollectHeartbeat() *master_pb.Heartbeat {
|
||||
}
|
||||
}
|
||||
|
||||
// delete expired ec volumes
|
||||
ecVolumeMessages, deletedEcVolumes := s.deleteExpiredEcVolumes()
|
||||
|
||||
var uuidList []string
|
||||
for _, loc := range s.Locations {
|
||||
uuidList = append(uuidList, loc.DirectoryUuid)
|
||||
@@ -365,12 +368,34 @@ func (s *Store) CollectHeartbeat() *master_pb.Heartbeat {
|
||||
DataCenter: s.dataCenter,
|
||||
Rack: s.rack,
|
||||
Volumes: volumeMessages,
|
||||
DeletedEcShards: deletedEcVolumes,
|
||||
HasNoVolumes: len(volumeMessages) == 0,
|
||||
HasNoEcShards: len(ecVolumeMessages) == 0,
|
||||
LocationUuids: uuidList,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (s *Store) deleteExpiredEcVolumes() (ecShards, deleted []*master_pb.VolumeEcShardInformationMessage) {
|
||||
for _, location := range s.Locations {
|
||||
for _, ev := range location.ecVolumes {
|
||||
messages := ev.ToVolumeEcShardInformationMessage()
|
||||
if ev.IsTimeToDestroy() {
|
||||
err := location.deleteEcVolumeById(ev.VolumeId)
|
||||
if err != nil {
|
||||
ecShards = append(ecShards, messages...)
|
||||
glog.Errorf("delete EcVolume err %d: %v", ev.VolumeId, err)
|
||||
continue
|
||||
}
|
||||
deleted = append(deleted, messages...)
|
||||
} else {
|
||||
ecShards = append(ecShards, messages...)
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Store) SetStopping() {
|
||||
s.isStopping = true
|
||||
for _, location := range s.Locations {
|
||||
|
||||
Reference in New Issue
Block a user