aboutsummaryrefslogtreecommitdiff
path: root/weed/storage/volume_checking.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-02-11 00:44:40 -0800
committerChris Lu <chris.lu@gmail.com>2021-02-11 00:44:40 -0800
commit885ca34748926b5ffb6fe6ef4cfc5e225bdaa98c (patch)
treea29060d4abe32d855db4d4e21469b8a6af581cb0 /weed/storage/volume_checking.go
parenta0e84c4fbcda5893c5414fe14866f1140f003d7a (diff)
downloadseaweedfs-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.go16
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)
+}