diff options
| author | Chris Lu <chris.lu@gmail.com> | 2013-01-02 15:39:55 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2013-01-02 15:39:55 -0800 |
| commit | 3c8dd8592a3a0bb3d0764038ebbe1ad91af8a982 (patch) | |
| tree | 6ddd6a99baf3d473e3ef6415b92b032e2400c818 /weed-fs/src/pkg | |
| parent | c35fe9d6318ed9b38e7d05c9e1c0de5e2f06f54c (diff) | |
| download | seaweedfs-3c8dd8592a3a0bb3d0764038ebbe1ad91af8a982.tar.xz seaweedfs-3c8dd8592a3a0bb3d0764038ebbe1ad91af8a982.zip | |
compare read file size with in-memory file size
Diffstat (limited to 'weed-fs/src/pkg')
| -rw-r--r-- | weed-fs/src/pkg/storage/needle_read_write.go | 13 | ||||
| -rw-r--r-- | weed-fs/src/pkg/storage/volume.go | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/weed-fs/src/pkg/storage/needle_read_write.go b/weed-fs/src/pkg/storage/needle_read_write.go index e6b9d6601..00844bad3 100644 --- a/weed-fs/src/pkg/storage/needle_read_write.go +++ b/weed-fs/src/pkg/storage/needle_read_write.go @@ -5,6 +5,7 @@ import ( "io" "os" "pkg/util" + "fmt" ) func (n *Needle) Append(w io.Writer, version Version) uint32 { @@ -72,9 +73,21 @@ func (n *Needle) Read(r io.Reader, size uint32, version Version) (int, error) { } return ret, e } else if version == Version2 { + if size == 0 { + return 0, nil + } bytes := make([]byte, NeedleHeaderSize+size+NeedleChecksumSize) ret, e := r.Read(bytes) + if e != nil { + return 0, e + } + if ret != int(NeedleHeaderSize+size+NeedleChecksumSize) { + return 0, errors.New("File Entry Not Found!") + } n.readNeedleHeader(bytes) + if n.Size != size { + return 0, fmt.Errorf("File Entry Not Found! Needle %d Memory %d", n.Size, size) + } n.readNeedleDataVersion2(bytes[NeedleHeaderSize : NeedleHeaderSize+int(n.Size)]) checksum := util.BytesToUint32(bytes[NeedleHeaderSize+n.Size : NeedleHeaderSize+n.Size+NeedleChecksumSize]) if checksum != NewCRC(n.Data).Value() { diff --git a/weed-fs/src/pkg/storage/volume.go b/weed-fs/src/pkg/storage/volume.go index d983e1213..0220bf895 100644 --- a/weed-fs/src/pkg/storage/volume.go +++ b/weed-fs/src/pkg/storage/volume.go @@ -116,7 +116,7 @@ func (v *Volume) delete(n *Needle) uint32 { v.accessLock.Lock() defer v.accessLock.Unlock() nv, ok := v.nm.Get(n.Id) - //log.Println("key", n.Id, "volume offset", nv.Offset, "data_size", n.Size, "cached size", nv.Size) + //fmt.Println("key", n.Id, "volume offset", nv.Offset, "data_size", n.Size, "cached size", nv.Size) if ok { v.nm.Delete(n.Id) v.dataFile.Seek(int64(nv.Offset*NeedlePaddingSize), 0) |
