Set etag properly to calculated value if available (#5106)

Fixes #5100
This commit is contained in:
Harshavardhana
2017-10-24 12:25:42 -07:00
committed by Dee Koder
parent 758d5458f0
commit 5eb210dd2e
6 changed files with 26 additions and 18 deletions

View File

@@ -17,6 +17,7 @@
package cmd
import (
"encoding/hex"
"fmt"
"io"
"os"
@@ -571,7 +572,7 @@ func (fs fsObjects) PutObjectPart(bucket, object, uploadID string, partID int, d
return pi, toObjectErr(err, minioMetaMultipartBucket, partPath)
}
md5hex := data.MD5HexString()
md5hex := hex.EncodeToString(data.MD5Current())
// Save the object part info in `fs.json`.
fsMeta.AddObjectPart(partID, partSuffix, md5hex, data.Size())

View File

@@ -17,6 +17,7 @@
package cmd
import (
"encoding/hex"
"fmt"
"io"
"io/ioutil"
@@ -593,8 +594,6 @@ func (fs fsObjects) PutObject(bucket string, object string, data *hash.Reader, m
return ObjectInfo{}, traceError(errInvalidArgument)
}
metadata["etag"] = data.MD5HexString()
var wlk *lock.LockedFile
if bucket != minioMetaBucket {
bucketMetaDir := pathJoin(fs.fsPath, minioMetaBucket, bucketMetaPrefix)
@@ -634,6 +633,8 @@ func (fs fsObjects) PutObject(bucket string, object string, data *hash.Reader, m
return ObjectInfo{}, toObjectErr(err, bucket, object)
}
metadata["etag"] = hex.EncodeToString(data.MD5Current())
// Should return IncompleteBody{} error when reader has fewer
// bytes than specified in request header.
if bytesWritten < data.Size() {

View File

@@ -17,6 +17,7 @@
package cmd
import (
"encoding/hex"
"fmt"
"io"
"io/ioutil"
@@ -694,7 +695,7 @@ func (xl xlObjects) PutObjectPart(bucket, object, uploadID string, partID int, d
// Once part is successfully committed, proceed with updating XL metadata.
xlMeta.Stat.ModTime = UTCNow()
md5hex := data.MD5HexString()
md5hex := hex.EncodeToString(data.MD5Current())
// Add the current part.
xlMeta.AddObjectPart(partID, partSuffix, md5hex, file.Size)

View File

@@ -17,6 +17,7 @@
package cmd
import (
"encoding/hex"
"io"
"path"
"strconv"
@@ -579,7 +580,7 @@ func (xl xlObjects) PutObject(bucket string, object string, data *hash.Reader, m
// Save additional erasureMetadata.
modTime := UTCNow()
metadata["etag"] = data.MD5HexString()
metadata["etag"] = hex.EncodeToString(data.MD5Current())
// Guess content-type from the extension if possible.
if metadata["content-type"] == "" {