diff options
| author | brstgt <brstgt@googlemail.com> | 2017-01-20 16:37:45 +0100 |
|---|---|---|
| committer | brstgt <brstgt@googlemail.com> | 2017-01-20 16:37:45 +0100 |
| commit | 0656838fe57651f59fc511ce02206ad5736d4ca9 (patch) | |
| tree | fa47ad7f8eace1f1d6b5bab39f074231834d1f5f | |
| parent | 4fb5bb09b664a9c70ee2d2c0f8aa59538dd662a4 (diff) | |
| download | seaweedfs-0656838fe57651f59fc511ce02206ad5736d4ca9.tar.xz seaweedfs-0656838fe57651f59fc511ce02206ad5736d4ca9.zip | |
Don't return actual file size from CheckVolumeDataIntegrity, it will be 0 if last needle is a tombstone, so it's not reliable anyway
| -rw-r--r-- | weed/storage/volume_checking.go | 14 | ||||
| -rw-r--r-- | weed/storage/volume_loading.go | 2 |
2 files changed, 8 insertions, 8 deletions
diff --git a/weed/storage/volume_checking.go b/weed/storage/volume_checking.go index 6d4011f27..67538ebb2 100644 --- a/weed/storage/volume_checking.go +++ b/weed/storage/volume_checking.go @@ -12,28 +12,28 @@ func getActualSize(size uint32) int64 { return NeedleHeaderSize + int64(size) + NeedleChecksumSize + int64(padding) } -func CheckVolumeDataIntegrity(v *Volume, indexFile *os.File) (int64, error) { +func CheckVolumeDataIntegrity(v *Volume, indexFile *os.File) (error) { var indexSize int64 var e error if indexSize, e = verifyIndexFileIntegrity(indexFile); e != nil { - return 0, fmt.Errorf("verifyIndexFileIntegrity %s failed: %v", indexFile.Name(), e) + return fmt.Errorf("verifyIndexFileIntegrity %s failed: %v", indexFile.Name(), e) } if indexSize == 0 { - return int64(SuperBlockSize), nil + return nil } var lastIdxEntry []byte if lastIdxEntry, e = readIndexEntryAtOffset(indexFile, indexSize-NeedleIndexSize); e != nil { - return 0, fmt.Errorf("readLastIndexEntry %s failed: %v", indexFile.Name(), e) + return fmt.Errorf("readLastIndexEntry %s failed: %v", indexFile.Name(), e) } key, offset, size := idxFileEntry(lastIdxEntry) if offset == 0 || size == TombstoneFileSize { - return 0, nil + return nil } if e = verifyNeedleIntegrity(v.dataFile, v.Version(), int64(offset)*NeedlePaddingSize, key, size); e != nil { - return 0, fmt.Errorf("verifyNeedleIntegrity %s failed: %v", indexFile.Name(), e) + return fmt.Errorf("verifyNeedleIntegrity %s failed: %v", indexFile.Name(), e) } - return int64(offset)*int64(NeedlePaddingSize) + getActualSize(size), nil + return nil } func verifyIndexFileIntegrity(indexFile *os.File) (indexSize int64, err error) { diff --git a/weed/storage/volume_loading.go b/weed/storage/volume_loading.go index 5043c1754..4be860987 100644 --- a/weed/storage/volume_loading.go +++ b/weed/storage/volume_loading.go @@ -64,7 +64,7 @@ func (v *Volume) load(alsoLoadIndex bool, createDatIfMissing bool, needleMapKind return fmt.Errorf("cannot write Volume Index %s.idx: %v", fileName, e) } } - if _, e = CheckVolumeDataIntegrity(v, indexFile); e != nil { + if e = CheckVolumeDataIntegrity(v, indexFile); e != nil { v.readOnly = true glog.V(0).Infof("volumeDataIntegrityChecking failed %v", e) } |
