Fix memcache support when value is returned as string always (#2924)
This commit is contained in:
parent
222e7c3f06
commit
7c3e605698
1 changed files with 27 additions and 2 deletions
29
modules/cache/cache.go
vendored
29
modules/cache/cache.go
vendored
|
@ -5,6 +5,9 @@
|
||||||
package cache
|
package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
|
||||||
mc "github.com/go-macaron/cache"
|
mc "github.com/go-macaron/cache"
|
||||||
|
@ -42,7 +45,18 @@ func GetInt(key string, getFunc func() (int, error)) (int, error) {
|
||||||
}
|
}
|
||||||
conn.Put(key, value, int64(setting.CacheService.TTL.Seconds()))
|
conn.Put(key, value, int64(setting.CacheService.TTL.Seconds()))
|
||||||
}
|
}
|
||||||
return conn.Get(key).(int), nil
|
switch value := conn.Get(key).(type) {
|
||||||
|
case int:
|
||||||
|
return value, nil
|
||||||
|
case string:
|
||||||
|
v, err := strconv.Atoi(value)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return v, nil
|
||||||
|
default:
|
||||||
|
return 0, fmt.Errorf("Unsupported cached value type: %v", value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetInt64 returns key value from cache with callback when no key exists in cache
|
// GetInt64 returns key value from cache with callback when no key exists in cache
|
||||||
|
@ -60,7 +74,18 @@ func GetInt64(key string, getFunc func() (int64, error)) (int64, error) {
|
||||||
}
|
}
|
||||||
conn.Put(key, value, int64(setting.CacheService.TTL.Seconds()))
|
conn.Put(key, value, int64(setting.CacheService.TTL.Seconds()))
|
||||||
}
|
}
|
||||||
return conn.Get(key).(int64), nil
|
switch value := conn.Get(key).(type) {
|
||||||
|
case int64:
|
||||||
|
return value, nil
|
||||||
|
case string:
|
||||||
|
v, err := strconv.ParseInt(value, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return v, nil
|
||||||
|
default:
|
||||||
|
return 0, fmt.Errorf("Unsupported cached value type: %v", value)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove key from cache
|
// Remove key from cache
|
||||||
|
|
Reference in a new issue