aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-12-28 11:35:27 -0800
committerChris Lu <chris.lu@gmail.com>2019-12-28 11:35:27 -0800
commitf4a74e03d18d0102f3119702ee92e2c0d66e9a17 (patch)
treef04e6e70850d328772f77641f8e2c3c55682dd1c
parent2000284435a7f3958cab6e4ed88128b12000da0b (diff)
downloadseaweedfs-f4a74e03d18d0102f3119702ee92e2c0d66e9a17.tar.xz
seaweedfs-f4a74e03d18d0102f3119702ee92e2c0d66e9a17.zip
refactoring: separating .vif from tier file loading
-rw-r--r--weed/storage/volume.go1
-rw-r--r--weed/storage/volume_loading.go8
-rw-r--r--weed/storage/volume_tier.go15
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 {