aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2019-10-09 00:02:50 -0700
committerChris Lu <chris.lu@gmail.com>2019-10-09 00:02:50 -0700
commit09874f0d16f60cec9cbce0108c4efa2c40d4786c (patch)
treee15bd953c6c5a812e72e60476ca7d1c6985c543a
parenta999ed94d0abe53ac444c6a12cf0f5f89ea06d33 (diff)
downloadseaweedfs-09874f0d16f60cec9cbce0108c4efa2c40d4786c.tar.xz
seaweedfs-09874f0d16f60cec9cbce0108c4efa2c40d4786c.zip
volume: return error if superblock is not initialized
fix https://github.com/chrislusf/seaweedfs/issues/1079
-rw-r--r--weed/storage/volume_loading.go3
-rw-r--r--weed/storage/volume_super_block.go4
2 files changed, 7 insertions, 0 deletions
diff --git a/weed/storage/volume_loading.go b/weed/storage/volume_loading.go
index 0b6021ca8..19a45c842 100644
--- a/weed/storage/volume_loading.go
+++ b/weed/storage/volume_loading.go
@@ -59,6 +59,9 @@ func (v *Volume) load(alsoLoadIndex bool, createDatIfMissing bool, needleMapKind
if alreadyHasSuperBlock {
e = v.readSuperBlock()
} else {
+ if !v.SuperBlock.Initialized() {
+ return fmt.Errorf("volume %s.dat not initialized", fileName)
+ }
e = v.maybeWriteSuperBlock()
}
if e == nil && alsoLoadIndex {
diff --git a/weed/storage/volume_super_block.go b/weed/storage/volume_super_block.go
index 164c887e1..d0f2757fa 100644
--- a/weed/storage/volume_super_block.go
+++ b/weed/storage/volume_super_block.go
@@ -69,6 +69,10 @@ func (s *SuperBlock) Bytes() []byte {
return header
}
+func (s *SuperBlock) Initialized() bool {
+ return s.ReplicaPlacement == nil || s.Ttl == nil
+}
+
func (v *Volume) maybeWriteSuperBlock() error {
stat, e := v.dataFile.Stat()
if e != nil {