diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-12-25 16:17:58 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-12-25 16:17:58 -0800 |
| commit | 35393b4a028abb966ce463dab54b2e7c4aa57db2 (patch) | |
| tree | 2dc41c310114660456acc605c8f6f8d7d7711eb6 | |
| parent | eecad6062a614fbd1cd90f9dbf023479a30b675c (diff) | |
| download | seaweedfs-35393b4a028abb966ce463dab54b2e7c4aa57db2.tar.xz seaweedfs-35393b4a028abb966ce463dab54b2e7c4aa57db2.zip | |
cleanly destroy remote files
| -rw-r--r-- | weed/storage/volume.go | 3 | ||||
| -rw-r--r-- | weed/storage/volume_read_write.go | 6 | ||||
| -rw-r--r-- | weed/storage/volume_tier.go | 8 |
3 files changed, 17 insertions, 0 deletions
diff --git a/weed/storage/volume.go b/weed/storage/volume.go index eaeed4e77..946f044eb 100644 --- a/weed/storage/volume.go +++ b/weed/storage/volume.go @@ -225,6 +225,9 @@ func (v *Volume) ToVolumeInformationMessage() *master_pb.VolumeInformationMessag } func (v *Volume) RemoteStorageNameKey() (storageName, storageKey string) { + if v.volumeTierInfo == nil { + return + } if len(v.volumeTierInfo.GetFiles()) == 0 { return } diff --git a/weed/storage/volume_read_write.go b/weed/storage/volume_read_write.go index 7fe913869..6cca8d6cf 100644 --- a/weed/storage/volume_read_write.go +++ b/weed/storage/volume_read_write.go @@ -46,6 +46,12 @@ func (v *Volume) Destroy() (err error) { err = fmt.Errorf("volume %d is compacting", v.Id) return } + storageName, storageKey := v.RemoteStorageNameKey() + if v.HasRemoteFile() && storageName != "" && storageKey != "" { + if backendStorage, found := backend.BackendStorages[storageName]; found { + backendStorage.DeleteFile(storageKey) + } + } v.Close() os.Remove(v.FileName() + ".dat") os.Remove(v.FileName() + ".idx") diff --git a/weed/storage/volume_tier.go b/weed/storage/volume_tier.go index 8406ab321..fecbd13ce 100644 --- a/weed/storage/volume_tier.go +++ b/weed/storage/volume_tier.go @@ -66,6 +66,14 @@ func (v *Volume) maybeLoadVolumeTierInfo() bool { return true } +func (v *Volume) HasRemoteFile() bool { + if v.DataBackend == nil { + return false + } + _, ok := v.DataBackend.(*backend.DiskFile) + return !ok +} + func (v *Volume) LoadRemoteFile() error { tierFile := v.volumeTierInfo.GetFiles()[0] backendStorage := backend.BackendStorages[tierFile.BackendName()] |
