|
|
@ -431,8 +431,9 @@ func (fs *FSObjects) CopyObject(ctx context.Context, srcBucket, srcObject, dstBu |
|
|
|
|
|
|
|
|
|
|
|
// Save objects' metadata in `fs.json`.
|
|
|
|
// Save objects' metadata in `fs.json`.
|
|
|
|
fsMeta := newFSMetaV1() |
|
|
|
fsMeta := newFSMetaV1() |
|
|
|
if _, err = fsMeta.ReadFrom(ctx, wlk); err != nil && err != io.EOF { |
|
|
|
if _, err = fsMeta.ReadFrom(ctx, wlk); err != nil { |
|
|
|
return oi, toObjectErr(err, srcBucket, srcObject) |
|
|
|
// For any error to read fsMeta, set default ETag and proceed.
|
|
|
|
|
|
|
|
fsMeta = fs.defaultFsJSON(srcObject) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fsMeta.Meta = srcInfo.UserDefined |
|
|
|
fsMeta.Meta = srcInfo.UserDefined |
|
|
@ -710,10 +711,7 @@ func (fs *FSObjects) getObjectInfo(ctx context.Context, bucket, object string) ( |
|
|
|
_, rerr := fsMeta.ReadFrom(ctx, rlk.LockedFile) |
|
|
|
_, rerr := fsMeta.ReadFrom(ctx, rlk.LockedFile) |
|
|
|
fs.rwPool.Close(fsMetaPath) |
|
|
|
fs.rwPool.Close(fsMetaPath) |
|
|
|
if rerr != nil { |
|
|
|
if rerr != nil { |
|
|
|
if rerr != io.EOF { |
|
|
|
// For any error to read fsMeta, set default ETag and proceed.
|
|
|
|
return oi, rerr |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// Set Default ETag, if fs.json is empty
|
|
|
|
|
|
|
|
fsMeta = fs.defaultFsJSON(object) |
|
|
|
fsMeta = fs.defaultFsJSON(object) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|