Browse Source

add vif file versions in case loading superblock fails

pull/1862/head
Chris Lu 4 years ago
parent
commit
015d16f43f
  1. 4
      weed/storage/volume_loading.go
  2. 15
      weed/storage/volume_tier.go

4
weed/storage/volume_loading.go

@ -39,12 +39,12 @@ func (v *Volume) load(alsoLoadIndex bool, createDatIfMissing bool, needleMapKind
} }
}() }()
hasVolumeInfoFile := v.maybeLoadVolumeInfo() && v.volumeInfo.Version != 0
hasVolumeInfoFile := v.maybeLoadVolumeInfo()
if v.HasRemoteFile() { if v.HasRemoteFile() {
v.noWriteCanDelete = true v.noWriteCanDelete = true
v.noWriteOrDelete = false v.noWriteOrDelete = false
glog.V(0).Infof("loading volume %d from remote %v", v.Id, v.volumeInfo.Files)
glog.V(0).Infof("loading volume %d from remote %v", v.Id, v.volumeInfo)
v.LoadRemoteFile() v.LoadRemoteFile()
alreadyHasSuperBlock = true alreadyHasSuperBlock = true
} else if exists, canRead, canWrite, modifiedTime, fileSize := util.CheckFile(v.FileName(".dat")); exists { } else if exists, canRead, canWrite, modifiedTime, fileSize := util.CheckFile(v.FileName(".dat")); exists {

15
weed/storage/volume_tier.go

@ -6,6 +6,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb" "github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb"
"github.com/chrislusf/seaweedfs/weed/storage/backend" "github.com/chrislusf/seaweedfs/weed/storage/backend"
_ "github.com/chrislusf/seaweedfs/weed/storage/backend/s3_backend" _ "github.com/chrislusf/seaweedfs/weed/storage/backend/s3_backend"
"github.com/chrislusf/seaweedfs/weed/storage/needle"
) )
func (v *Volume) GetVolumeInfo() *volume_server_pb.VolumeInfo { func (v *Volume) GetVolumeInfo() *volume_server_pb.VolumeInfo {
@ -14,14 +15,24 @@ func (v *Volume) GetVolumeInfo() *volume_server_pb.VolumeInfo {
func (v *Volume) maybeLoadVolumeInfo() (found bool) { func (v *Volume) maybeLoadVolumeInfo() (found bool) {
v.volumeInfo, v.hasRemoteFile, _ = pb.MaybeLoadVolumeInfo(v.FileName(".vif"))
var err error
v.volumeInfo, v.hasRemoteFile, err = pb.MaybeLoadVolumeInfo(v.FileName(".vif"))
if v.volumeInfo.Version == 0 {
v.volumeInfo.Version = uint32(needle.CurrentVersion)
}
if v.hasRemoteFile { if v.hasRemoteFile {
glog.V(0).Infof("volume %d is tiered to %s as %s and read only", v.Id, 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.volumeInfo.Files[0].BackendName(), v.volumeInfo.Files[0].Key)
} }
return
if err != nil {
glog.Warningf("load volume %d.vif file: %v", v.Id, err)
return false
}
return true
} }

Loading…
Cancel
Save