mirror of
https://github.com/rclone/rclone.git
synced 2024-11-24 20:56:20 +08:00
lib/cache: add PutErr to put a value with an error into the cache
This commit is contained in:
parent
6ff1b6c505
commit
e3f6f68885
10
lib/cache/cache.go
vendored
10
lib/cache/cache.go
vendored
|
@ -124,8 +124,8 @@ func (c *Cache) Unpin(key string) {
|
|||
c.addPin(key, -1)
|
||||
}
|
||||
|
||||
// Put puts a value named key into the cache
|
||||
func (c *Cache) Put(key string, value interface{}) {
|
||||
// PutErr puts a value named key with err into the cache
|
||||
func (c *Cache) PutErr(key string, value interface{}, err error) {
|
||||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
if c.noCache() {
|
||||
|
@ -134,11 +134,17 @@ func (c *Cache) Put(key string, value interface{}) {
|
|||
entry := &cacheEntry{
|
||||
value: value,
|
||||
key: key,
|
||||
err: err,
|
||||
}
|
||||
c.used(entry)
|
||||
c.cache[key] = entry
|
||||
}
|
||||
|
||||
// Put puts a value named key into the cache
|
||||
func (c *Cache) Put(key string, value interface{}) {
|
||||
c.PutErr(key, value, nil)
|
||||
}
|
||||
|
||||
// GetMaybe returns the key and true if found, nil and false if not
|
||||
func (c *Cache) GetMaybe(key string) (value interface{}, found bool) {
|
||||
c.mu.Lock()
|
||||
|
|
16
lib/cache/cache_test.go
vendored
16
lib/cache/cache_test.go
vendored
|
@ -81,6 +81,22 @@ func TestGetError(t *testing.T) {
|
|||
assert.Equal(t, 0, len(c.cache))
|
||||
}
|
||||
|
||||
func TestPutErr(t *testing.T) {
|
||||
c, create := setup(t)
|
||||
|
||||
assert.Equal(t, 0, len(c.cache))
|
||||
|
||||
c.PutErr("/alien", "slime", errSentinel)
|
||||
|
||||
assert.Equal(t, 1, len(c.cache))
|
||||
|
||||
fNew, err := c.Get("/alien", create)
|
||||
require.Equal(t, errSentinel, err)
|
||||
require.Equal(t, "slime", fNew)
|
||||
|
||||
assert.Equal(t, 1, len(c.cache))
|
||||
}
|
||||
|
||||
func TestPut(t *testing.T) {
|
||||
c, create := setup(t)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user