diff --git a/cmd/bucket-metadata-sys.go b/cmd/bucket-metadata-sys.go index d2db2c4fa..05b1cea50 100644 --- a/cmd/bucket-metadata-sys.go +++ b/cmd/bucket-metadata-sys.go @@ -477,6 +477,15 @@ func (sys *BucketMetadataSys) load(ctx context.Context, buckets []BucketInfo, ob } } +// Reset the state of the BucketMetadataSys. +func (sys *BucketMetadataSys) Reset() { + sys.Lock() + for k := range sys.metadataMap { + delete(sys.metadataMap, k) + } + sys.Unlock() +} + // NewBucketMetadataSys - creates new policy system. func NewBucketMetadataSys() *BucketMetadataSys { return &BucketMetadataSys{ diff --git a/cmd/bucket-versioning.go b/cmd/bucket-versioning.go index 55c2e50b7..fca5af0b7 100644 --- a/cmd/bucket-versioning.go +++ b/cmd/bucket-versioning.go @@ -51,6 +51,11 @@ func (sys *BucketVersioningSys) Get(bucket string) (*versioning.Versioning, erro return globalBucketMetadataSys.GetVersioningConfig(bucket) } +// Reset BucketVersioningSys to initial state. +func (sys *BucketVersioningSys) Reset() { + // There is currently no internal state. +} + // NewBucketVersioningSys - creates new versioning system. func NewBucketVersioningSys() *BucketVersioningSys { return &BucketVersioningSys{} diff --git a/cmd/server-main.go b/cmd/server-main.go index cf2d0cfb6..732d36d02 100644 --- a/cmd/server-main.go +++ b/cmd/server-main.go @@ -183,7 +183,12 @@ func newAllSubsystems() { globalNotificationSys = NewNotificationSys(globalEndpoints) // Create new bucket metadata system. - globalBucketMetadataSys = NewBucketMetadataSys() + if globalBucketMetadataSys == nil { + globalBucketMetadataSys = NewBucketMetadataSys() + } else { + // Reinitialize safely when testing. + globalBucketMetadataSys.Reset() + } // Create the bucket bandwidth monitor globalBucketMonitor = bandwidth.NewMonitor(GlobalServiceDoneCh) @@ -210,7 +215,11 @@ func newAllSubsystems() { globalBucketQuotaSys = NewBucketQuotaSys() // Create new bucket versioning subsystem - globalBucketVersioningSys = NewBucketVersioningSys() + if globalBucketVersioningSys == nil { + globalBucketVersioningSys = NewBucketVersioningSys() + } else { + globalBucketVersioningSys.Reset() + } // Create new bucket replication subsytem globalBucketTargetSys = NewBucketTargetSys()