diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-02-11 00:44:40 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-02-11 00:44:40 -0800 |
| commit | 885ca34748926b5ffb6fe6ef4cfc5e225bdaa98c (patch) | |
| tree | a29060d4abe32d855db4d4e21469b8a6af581cb0 /weed/storage/volume_checking.go | |
| parent | a0e84c4fbcda5893c5414fe14866f1140f003d7a (diff) | |
| download | seaweedfs-885ca34748926b5ffb6fe6ef4cfc5e225bdaa98c.tar.xz seaweedfs-885ca34748926b5ffb6fe6ef4cfc5e225bdaa98c.zip | |
volume: fail fast if idx files are missing
fix https://github.com/chrislusf/seaweedfs/issues/1796
Diffstat (limited to 'weed/storage/volume_checking.go')
| -rw-r--r-- | weed/storage/volume_checking.go | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/weed/storage/volume_checking.go b/weed/storage/volume_checking.go index 8d63c39c1..b76933083 100644 --- a/weed/storage/volume_checking.go +++ b/weed/storage/volume_checking.go @@ -2,6 +2,7 @@ package storage import ( "fmt" + "github.com/chrislusf/seaweedfs/weed/storage/super_block" "io" "os" @@ -148,3 +149,18 @@ func verifyDeletedNeedleIntegrity(datFile backend.BackendStorageFile, v needle.V } return n.AppendAtNs, err } + +func (v *Volume) checkIdxFile() error { + datFileSize, _, err := v.DataBackend.GetStat() + if err != nil { + return fmt.Errorf("get stat %s: %v", v.FileName(".dat"), err) + } + if datFileSize <= super_block.SuperBlockSize { + return nil + } + indexFileName := v.FileName(".idx") + if util.FileExists(indexFileName) { + return nil + } + return fmt.Errorf("idx file %s does not exists", indexFileName) +} |
