Merge pull request #1444 from levenlabs/delete

volume: Don't unmount before deleting volume in copy
This commit is contained in:
Chris Lu
2020-09-01 20:56:03 -07:00
committed by GitHub
3 changed files with 6 additions and 8 deletions

View File

@@ -27,17 +27,12 @@ func (vs *VolumeServer) VolumeCopy(ctx context.Context, req *volume_server_pb.Vo
glog.V(0).Infof("volume %d already exists. deleted before copying...", req.VolumeId) glog.V(0).Infof("volume %d already exists. deleted before copying...", req.VolumeId)
err := vs.store.UnmountVolume(needle.VolumeId(req.VolumeId)) err := vs.store.DeleteVolume(needle.VolumeId(req.VolumeId))
if err != nil {
return nil, fmt.Errorf("failed to mount existing volume %d: %v", req.VolumeId, err)
}
err = vs.store.DeleteVolume(needle.VolumeId(req.VolumeId))
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to delete existing volume %d: %v", req.VolumeId, err) return nil, fmt.Errorf("failed to delete existing volume %d: %v", req.VolumeId, err)
} }
glog.V(0).Infof("deleted exisitng volume %d before copying.", req.VolumeId) glog.V(0).Infof("deleted existing volume %d before copying.", req.VolumeId)
} }
location := vs.store.FindFreeLocation() location := vs.store.FindFreeLocation()

View File

@@ -174,6 +174,9 @@ func (l *DiskLocation) DeleteCollectionFromDiskLocation(collection string) (e er
} }
func (l *DiskLocation) deleteVolumeById(vid needle.VolumeId) (found bool, e error) { func (l *DiskLocation) deleteVolumeById(vid needle.VolumeId) (found bool, e error) {
l.volumesLock.Lock()
defer l.volumesLock.Unlock()
v, ok := l.volumes[vid] v, ok := l.volumes[vid]
if !ok { if !ok {
return return

View File

@@ -380,7 +380,7 @@ func (s *Store) DeleteVolume(i needle.VolumeId) error {
Ttl: v.Ttl.ToUint32(), Ttl: v.Ttl.ToUint32(),
} }
for _, location := range s.Locations { for _, location := range s.Locations {
if found, error := location.deleteVolumeById(i); found && error == nil { if found, err := location.deleteVolumeById(i); found && err == nil {
glog.V(0).Infof("DeleteVolume %d", i) glog.V(0).Infof("DeleteVolume %d", i)
s.DeletedVolumesChan <- message s.DeletedVolumesChan <- message
return nil return nil