diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-12-28 11:35:27 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-12-28 11:35:27 -0800 |
| commit | f4a74e03d18d0102f3119702ee92e2c0d66e9a17 (patch) | |
| tree | f04e6e70850d328772f77641f8e2c3c55682dd1c | |
| parent | 2000284435a7f3958cab6e4ed88128b12000da0b (diff) | |
| download | seaweedfs-f4a74e03d18d0102f3119702ee92e2c0d66e9a17.tar.xz seaweedfs-f4a74e03d18d0102f3119702ee92e2c0d66e9a17.zip | |
refactoring: separating .vif from tier file loading
| -rw-r--r-- | weed/storage/volume.go | 1 | ||||
| -rw-r--r-- | weed/storage/volume_loading.go | 8 | ||||
| -rw-r--r-- | weed/storage/volume_tier.go | 15 |
3 files changed, 11 insertions, 13 deletions
diff --git a/weed/storage/volume.go b/weed/storage/volume.go index 9af70c86f..49af6f850 100644 --- a/weed/storage/volume.go +++ b/weed/storage/volume.go @@ -27,6 +27,7 @@ type Volume struct { needleMapKind NeedleMapType noWriteOrDelete bool // if readonly, either noWriteOrDelete or noWriteCanDelete noWriteCanDelete bool // if readonly, either noWriteOrDelete or noWriteCanDelete + hasRemoteFile bool // if the volume has a remote file MemoryMapMaxSizeMb uint32 super_block.SuperBlock diff --git a/weed/storage/volume_loading.go b/weed/storage/volume_loading.go index 42562d233..9a99c5366 100644 --- a/weed/storage/volume_loading.go +++ b/weed/storage/volume_loading.go @@ -26,9 +26,13 @@ func (v *Volume) load(alsoLoadIndex bool, createDatIfMissing bool, needleMapKind fileName := v.FileName() alreadyHasSuperBlock := false - if v.maybeLoadVolumeInfo() { + v.maybeLoadVolumeInfo() + + if v.HasRemoteFile() { v.noWriteCanDelete = true - // open remote file + v.noWriteOrDelete = false + glog.V(0).Infof("loading volume %d from remote %v", v.Id, v.volumeInfo.Files) + v.LoadRemoteFile() alreadyHasSuperBlock = true } else if exists, canRead, canWrite, modifiedTime, fileSize := checkFile(fileName + ".dat"); exists { // open dat file diff --git a/weed/storage/volume_tier.go b/weed/storage/volume_tier.go index 82b822393..6e3ca8e2e 100644 --- a/weed/storage/volume_tier.go +++ b/weed/storage/volume_tier.go @@ -7,10 +7,11 @@ import ( _ "github.com/chrislusf/seaweedfs/weed/storage/backend/s3_backend" + "github.com/golang/protobuf/jsonpb" + "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb" "github.com/chrislusf/seaweedfs/weed/storage/backend" - "github.com/golang/protobuf/jsonpb" ) func (v *Volume) GetVolumeInfo() *volume_server_pb.VolumeInfo { @@ -57,21 +58,13 @@ func (v *Volume) maybeLoadVolumeInfo() bool { glog.V(0).Infof("volume %d is tiered to %s as %s and read only", v.Id, v.volumeInfo.Files[0].BackendName(), v.volumeInfo.Files[0].Key) - v.noWriteCanDelete = true - v.noWriteOrDelete = false - - glog.V(0).Infof("loading volume %d from remote %v", v.Id, v.volumeInfo.Files) - v.LoadRemoteFile() + v.hasRemoteFile = true return true } func (v *Volume) HasRemoteFile() bool { - if v.DataBackend == nil { - return false - } - _, ok := v.DataBackend.(*backend.DiskFile) - return !ok + return v.hasRemoteFile } func (v *Volume) LoadRemoteFile() error { |
