mirror of
https://github.com/minio/minio.git
synced 2025-01-12 23:43:22 -05:00
Return back entity too large for createObject requests bigger than cache size
This commit is contained in:
parent
5edd8cce3d
commit
64b014369c
3
main.go
3
main.go
@ -18,6 +18,7 @@ package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/user"
|
||||
"runtime"
|
||||
@ -116,7 +117,7 @@ func getBuildDate() string {
|
||||
if t.IsZero() {
|
||||
return ""
|
||||
}
|
||||
return t.Format(time.RFC1123)
|
||||
return t.Format(http.TimeFormat)
|
||||
}
|
||||
|
||||
// Tries to get os/arch/platform specific information
|
||||
|
@ -43,6 +43,7 @@ type memoryDriver struct {
|
||||
lock *sync.RWMutex
|
||||
objects *trove.Cache
|
||||
multiPartObjects *trove.Cache
|
||||
maxSize uint64
|
||||
}
|
||||
|
||||
type storedBucket struct {
|
||||
@ -71,6 +72,7 @@ func Start(maxSize uint64, expiration time.Duration) (chan<- string, <-chan erro
|
||||
memory = new(memoryDriver)
|
||||
memory.storedBuckets = make(map[string]storedBucket)
|
||||
memory.objects = trove.NewCache(maxSize, expiration)
|
||||
memory.maxSize = maxSize
|
||||
memory.multiPartObjects = trove.NewCache(0, time.Duration(0))
|
||||
memory.lock = new(sync.RWMutex)
|
||||
|
||||
@ -204,6 +206,14 @@ func isMD5SumEqual(expectedMD5Sum, actualMD5Sum string) error {
|
||||
}
|
||||
|
||||
func (memory *memoryDriver) CreateObject(bucket, key, contentType, expectedMD5Sum string, size int64, data io.Reader) (string, error) {
|
||||
if size > int64(memory.maxSize) {
|
||||
generic := drivers.GenericObjectError{Bucket: bucket, Object: key}
|
||||
return "", iodine.New(drivers.EntityTooLarge{
|
||||
GenericObjectError: generic,
|
||||
Size: strconv.FormatInt(size, 10),
|
||||
MaxSize: strconv.FormatUint(memory.maxSize, 10),
|
||||
}, nil)
|
||||
}
|
||||
md5sum, err := memory.createObject(bucket, key, contentType, expectedMD5Sum, size, data)
|
||||
// free
|
||||
debug.FreeOSMemory()
|
||||
|
Loading…
Reference in New Issue
Block a user