mirror of
https://github.com/minio/minio.git
synced 2025-12-03 06:22:32 -05:00
Put object on successful write returns full metadata, to avoid subsequent GetObjectMetadata() calls in driver
This commit is contained in:
@@ -528,6 +528,10 @@ func (d donutDriver) CreateObject(bucketName, objectName, contentType, expectedM
|
||||
"objectName": objectName,
|
||||
"contentType": contentType,
|
||||
}
|
||||
if d.donut == nil {
|
||||
return "", iodine.New(drivers.InternalError{}, errParams)
|
||||
}
|
||||
// TODO - Should be able to write bigger than cache
|
||||
if size > int64(d.maxSize) {
|
||||
generic := drivers.GenericObjectError{Bucket: bucketName, Object: objectName}
|
||||
return "", iodine.New(drivers.EntityTooLarge{
|
||||
@@ -536,9 +540,6 @@ func (d donutDriver) CreateObject(bucketName, objectName, contentType, expectedM
|
||||
MaxSize: strconv.FormatUint(d.maxSize, 10),
|
||||
}, nil)
|
||||
}
|
||||
if d.donut == nil {
|
||||
return "", iodine.New(drivers.InternalError{}, errParams)
|
||||
}
|
||||
if !drivers.IsValidBucket(bucketName) {
|
||||
return "", iodine.New(drivers.BucketNameInvalid{Bucket: bucketName}, nil)
|
||||
}
|
||||
@@ -565,7 +566,7 @@ func (d donutDriver) CreateObject(bucketName, objectName, contentType, expectedM
|
||||
expectedMD5Sum = hex.EncodeToString(expectedMD5SumBytes)
|
||||
}
|
||||
newReader := newProxyReader(reader)
|
||||
calculatedMD5Sum, err := d.donut.PutObject(bucketName, objectName, expectedMD5Sum, newReader, metadata)
|
||||
objMetadata, err := d.donut.PutObject(bucketName, objectName, expectedMD5Sum, newReader, metadata)
|
||||
if err != nil {
|
||||
switch iodine.ToError(err).(type) {
|
||||
case donut.BadDigest:
|
||||
@@ -577,20 +578,16 @@ func (d donutDriver) CreateObject(bucketName, objectName, contentType, expectedM
|
||||
// free up
|
||||
newReader.readBytes = nil
|
||||
go debug.FreeOSMemory()
|
||||
objectMetadata, err := d.donut.GetObjectMetadata(bucketName, objectName)
|
||||
if err != nil {
|
||||
return "", iodine.New(err, nil)
|
||||
}
|
||||
newObject := drivers.ObjectMetadata{
|
||||
Bucket: bucketName,
|
||||
Key: objectName,
|
||||
|
||||
ContentType: objectMetadata.Metadata["contentType"],
|
||||
Created: objectMetadata.Created,
|
||||
Md5: calculatedMD5Sum,
|
||||
Size: objectMetadata.Size,
|
||||
ContentType: objMetadata.Metadata["contentType"],
|
||||
Created: objMetadata.Created,
|
||||
Md5: objMetadata.MD5Sum,
|
||||
Size: objMetadata.Size,
|
||||
}
|
||||
storedBucket.objectMetadata[objectKey] = newObject
|
||||
d.storedBuckets[bucketName] = storedBucket
|
||||
return calculatedMD5Sum, nil
|
||||
return newObject.Md5, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user