diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2020-09-01 20:56:03 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-01 20:56:03 -0700 |
| commit | e82217f95f28c24bfebff2e7a93863704d55cad6 (patch) | |
| tree | 638806dd8e32e3fbdff1608c4a56f74ea021a656 | |
| parent | 2b14ae581916f324f8cc6fdf4778d948f9f3b6fd (diff) | |
| parent | 8e54e345760c2dca12085311d6fe0cf7eba8b6a9 (diff) | |
| download | seaweedfs-e82217f95f28c24bfebff2e7a93863704d55cad6.tar.xz seaweedfs-e82217f95f28c24bfebff2e7a93863704d55cad6.zip | |
Merge pull request #1444 from levenlabs/delete
volume: Don't unmount before deleting volume in copy
| -rw-r--r-- | weed/server/volume_grpc_copy.go | 9 | ||||
| -rw-r--r-- | weed/storage/disk_location.go | 3 | ||||
| -rw-r--r-- | weed/storage/store.go | 2 |
3 files changed, 6 insertions, 8 deletions
diff --git a/weed/server/volume_grpc_copy.go b/weed/server/volume_grpc_copy.go index 5c7d5572c..cd2b53c8a 100644 --- a/weed/server/volume_grpc_copy.go +++ b/weed/server/volume_grpc_copy.go @@ -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) - err := vs.store.UnmountVolume(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)) + err := vs.store.DeleteVolume(needle.VolumeId(req.VolumeId)) if err != nil { 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() diff --git a/weed/storage/disk_location.go b/weed/storage/disk_location.go index c309b3f92..9ecc57459 100644 --- a/weed/storage/disk_location.go +++ b/weed/storage/disk_location.go @@ -174,6 +174,9 @@ func (l *DiskLocation) DeleteCollectionFromDiskLocation(collection string) (e er } func (l *DiskLocation) deleteVolumeById(vid needle.VolumeId) (found bool, e error) { + l.volumesLock.Lock() + defer l.volumesLock.Unlock() + v, ok := l.volumes[vid] if !ok { return diff --git a/weed/storage/store.go b/weed/storage/store.go index 3f16688bf..48cbeb3d1 100644 --- a/weed/storage/store.go +++ b/weed/storage/store.go @@ -380,7 +380,7 @@ func (s *Store) DeleteVolume(i needle.VolumeId) error { Ttl: v.Ttl.ToUint32(), } 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) s.DeletedVolumesChan <- message return nil |
