From dafdc746053c4f79da1c20390ef242f7403bd4ef Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Thu, 26 Jan 2017 10:19:07 -0800 Subject: [PATCH] fs: if `fs.json` is empty ignore it while reading metadata. (#3634) This is needed so that we don't send wrong errors on previously failed PutObject() which would have left a stale `fs.json` entry. --- cmd/fs-v1.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cmd/fs-v1.go b/cmd/fs-v1.go index 85ced11f6..b9cdb6665 100644 --- a/cmd/fs-v1.go +++ b/cmd/fs-v1.go @@ -506,7 +506,12 @@ func (fs fsObjects) getObjectInfo(bucket, object string) (ObjectInfo, error) { // Read from fs metadata only if it exists. defer fs.rwPool.Close(fsMetaPath) if _, rerr := fsMeta.ReadFrom(rlk.LockedFile); rerr != nil { - return ObjectInfo{}, toObjectErr(rerr, bucket, object) + // `fs.json` can be empty due to previously failed + // PutObject() transaction, if we arrive at such + // a situation we just ignore and continue. + if errorCause(rerr) != io.EOF { + return ObjectInfo{}, toObjectErr(rerr, bucket, object) + } } }