diff --git a/pkgs/erasure/decode.go b/pkgs/erasure/decode.go index 5616568a0..d78e0ab13 100644 --- a/pkgs/erasure/decode.go +++ b/pkgs/erasure/decode.go @@ -111,6 +111,7 @@ func (e *Encoder) Decode(chunks [][]byte, length int) ([]byte, error) { return recovered_output[:length], nil } -func Decode(chunks [][]byte, ep *EncoderParams, length int) (block []byte, err error) { - return GetEncoder(ep).Decode(chunks, length) +func Decode(block [][]byte, ep *EncoderParams, length int) ([]byte, error) { + encoder := NewEncoder(ep) + return encoder.Decode(block, length) } diff --git a/pkgs/erasure/encode.go b/pkgs/erasure/encode.go index e60497b47..e1e4679b9 100644 --- a/pkgs/erasure/encode.go +++ b/pkgs/erasure/encode.go @@ -151,10 +151,7 @@ func (e *Encoder) Encode(block []byte) ([][]byte, int) { return chunks, block_len } -func GetEncoder(ep *EncoderParams) *Encoder { - return DefaultCache.GetC(ep) -} - -func Encode(data []byte, ep *EncoderParams) (chunks [][]byte, length int) { - return GetEncoder(ep).Encode(data) +func Encode(block []byte, ep *EncoderParams) ([][]byte, int) { + encoder := NewEncoder(ep) + return encoder.Encode(block) } diff --git a/pkgs/erasure/lru.go b/pkgs/erasure/lru.go deleted file mode 100644 index a9a02df2a..000000000 --- a/pkgs/erasure/lru.go +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Mini Object Storage, (C) 2014 Minio, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package erasure - -import ( - "github.com/golang/groupcache/lru" - "sync" -) - -// thread-safe LRU cache from GroupCache -type Cache struct { - mutex sync.RWMutex - cache *lru.Cache -} - -var DefaultCache *Cache = GetCache(0) - -// Allocate ``Cache`` LRU -func GetCache(capacity int) *Cache { - return &Cache{ - cache: lru.New(capacity), - } -} - -// ``GetC()`` -- Grab encoder from LRU -func (c *Cache) GetC(ep *EncoderParams) *Encoder { - if encoder, ret := c._Get(ep); ret { - return encoder - } - encoder := NewEncoder(ep) - c._Put(ep, encoder) - return encoder -} - -// ``_Get()`` -- Get key from existing LRU -func (c *Cache) _Get(ep *EncoderParams) (*Encoder, bool) { - c.mutex.RLock() - defer c.mutex.RUnlock() - if encoder, ret := c.cache.Get(ep); ret { - return encoder.(*Encoder), ret - } - return nil, false -} - -// ``_Put()`` -- Add key to existing LRU -func (c *Cache) _Put(ep *EncoderParams, encoder *Encoder) { - c.mutex.Lock() - defer c.mutex.Unlock() - c.cache.Add(ep, encoder) -}