Limit memory mode at 100 buckets and return error appropriately

~~~
mc: <ERROR> Failed to create bucket for URL [http://localhost:9000/newbucket-101]. Reason: [You have attempted to create more buckets than allowed.].
~~~

Response from server
This commit is contained in:
Harshavardhana
2015-04-26 21:15:43 -07:00
parent f20515b4ed
commit 8beca83090
5 changed files with 26 additions and 1 deletions

View File

@@ -60,6 +60,10 @@ type storedObject struct {
metadata drivers.ObjectMetadata
}
const (
totalBuckets = 100
)
// Start memory object server
func Start(maxSize uint64) (chan<- string, <-chan error, drivers.Driver) {
ctrlChannel := make(chan string)
@@ -263,6 +267,10 @@ func (memory *memoryDriver) CreateObject(bucket, key, contentType, expectedMD5Su
// CreateBucket - create bucket in memory
func (memory *memoryDriver) CreateBucket(bucketName, acl string) error {
memory.lock.RLock()
if len(memory.bucketMetadata) == totalBuckets {
memory.lock.RLock()
return iodine.New(drivers.TooManyBuckets{Bucket: bucketName}, nil)
}
if !drivers.IsValidBucket(bucketName) {
memory.lock.RUnlock()
return iodine.New(drivers.BucketNameInvalid{Bucket: bucketName}, nil)