Merge pull request #650 from harshavardhana/pr_out_add_time_since_on_buckets_created_time_to_avoid_deleting_buckets_spuriously_during_eviction_of_objects

master
Harshavardhana 10 years ago
commit 6b8766790b
  1. 4
      pkg/storage/drivers/memory/memory.go

@ -44,6 +44,7 @@ type memoryDriver struct {
objects *trove.Cache objects *trove.Cache
multiPartObjects *trove.Cache multiPartObjects *trove.Cache
maxSize uint64 maxSize uint64
expiration time.Duration
} }
type storedBucket struct { type storedBucket struct {
@ -73,6 +74,7 @@ func Start(maxSize uint64, expiration time.Duration) (chan<- string, <-chan erro
memory.storedBuckets = make(map[string]storedBucket) memory.storedBuckets = make(map[string]storedBucket)
memory.objects = trove.NewCache(maxSize, expiration) memory.objects = trove.NewCache(maxSize, expiration)
memory.maxSize = maxSize memory.maxSize = maxSize
memory.expiration = expiration
memory.multiPartObjects = trove.NewCache(0, time.Duration(0)) memory.multiPartObjects = trove.NewCache(0, time.Duration(0))
memory.lock = new(sync.RWMutex) memory.lock = new(sync.RWMutex)
@ -517,8 +519,10 @@ func (memory *memoryDriver) expiredObject(a ...interface{}) {
delete(storedBucket.objectMetadata, key) delete(storedBucket.objectMetadata, key)
// remove bucket if no objects found anymore // remove bucket if no objects found anymore
if len(storedBucket.objectMetadata) == 0 { if len(storedBucket.objectMetadata) == 0 {
if time.Since(memory.storedBuckets[bucket].bucketMetadata.Created) > memory.expiration {
delete(memory.storedBuckets, bucket) delete(memory.storedBuckets, bucket)
} }
} }
}
debug.FreeOSMemory() debug.FreeOSMemory()
} }

Loading…
Cancel
Save