From 9ef1ef5c8c8ec4196b6013176d40df6f154ab0c8 Mon Sep 17 00:00:00 2001 From: "Frederick F. Kautz IV" Date: Sat, 29 Nov 2014 13:39:30 -0800 Subject: [PATCH] Removing LRU from erasure package --- pkgs/erasure/decode.go | 5 ++-- pkgs/erasure/encode.go | 9 ++---- pkgs/erasure/lru.go | 64 ------------------------------------------ 3 files changed, 6 insertions(+), 72 deletions(-) delete mode 100644 pkgs/erasure/lru.go diff --git a/pkgs/erasure/decode.go b/pkgs/erasure/decode.go index 46a973874..7c05cd4a2 100644 --- a/pkgs/erasure/decode.go +++ b/pkgs/erasure/decode.go @@ -108,6 +108,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 299d6aba6..e93cc3128 100644 --- a/pkgs/erasure/encode.go +++ b/pkgs/erasure/encode.go @@ -201,10 +201,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) -}