diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-03-01 00:48:30 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-03-01 00:48:30 -0800 |
| commit | 015d16f43f1ff0a8b8576914c665c963b700f768 (patch) | |
| tree | 8e412436389b189d1fe32c361420edf44addef6f | |
| parent | d680676d45e7d5447c241cfef47a5c665931fc85 (diff) | |
| download | seaweedfs-015d16f43f1ff0a8b8576914c665c963b700f768.tar.xz seaweedfs-015d16f43f1ff0a8b8576914c665c963b700f768.zip | |
add vif file versions in case loading superblock fails
| -rw-r--r-- | weed/storage/volume_loading.go | 4 | ||||
| -rw-r--r-- | weed/storage/volume_tier.go | 15 |
2 files changed, 15 insertions, 4 deletions
diff --git a/weed/storage/volume_loading.go b/weed/storage/volume_loading.go index bff1055bb..cf34ff133 100644 --- a/weed/storage/volume_loading.go +++ b/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() { v.noWriteCanDelete = true 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() alreadyHasSuperBlock = true } else if exists, canRead, canWrite, modifiedTime, fileSize := util.CheckFile(v.FileName(".dat")); exists { diff --git a/weed/storage/volume_tier.go b/weed/storage/volume_tier.go index 77efd8a14..da93221b2 100644 --- a/weed/storage/volume_tier.go +++ b/weed/storage/volume_tier.go @@ -6,6 +6,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb" "github.com/chrislusf/seaweedfs/weed/storage/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 { @@ -14,14 +15,24 @@ func (v *Volume) GetVolumeInfo() *volume_server_pb.VolumeInfo { 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 { 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) } - return + if err != nil { + glog.Warningf("load volume %d.vif file: %v", v.Id, err) + return false + } + + return true } |
