Skip to content

Commit

Permalink
Implement simplelru.InvalidSize error
Browse files Browse the repository at this point in the history
  • Loading branch information
rsjethani committed Sep 5, 2019
1 parent ae46393 commit 6b3f653
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
2 changes: 2 additions & 0 deletions 2q.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ func New2QParams(size int, recentRatio float64, ghostRatio float64) (*TwoQueueCa
}
recentEvict, err := simplelru.NewLRU(evictSize, nil)
if err != nil {
if _, ok := err.(*simplelru.InvalidSize); ok {
return nil, fmt.Errorf("Failed to create Evict cache, please choose a higher 'ghostRatio' or increase cache 'size'")
}
}

// Initialize the cache
Expand Down
13 changes: 11 additions & 2 deletions simplelru/lru.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@ package simplelru

import (
"container/list"
"errors"
)

// InvalidSize error is returned when a size <= 0 is given while creting simplelru
type InvalidSize struct {
errMsg string
}

// Error implements the error interface for type InvalidSize
func (e *InvalidSize) Error() string {
return "Must provide a positive size"
}

// EvictCallback is used to get a callback when a cache entry is evicted
type EvictCallback func(key interface{}, value interface{})

Expand All @@ -25,7 +34,7 @@ type entry struct {
// NewLRU constructs an LRU of the given size
func NewLRU(size int, onEvict EvictCallback) (*LRU, error) {
if size <= 0 {
return nil, errors.New("Must provide a positive size")
return nil, &InvalidSize{}
}
c := &LRU{
size: size,
Expand Down

0 comments on commit 6b3f653

Please sign in to comment.