* update gitea.com/go-chi/cache -> v0.2.0 * ajust to new interface * refactortags/v1.18.0-dev
@@ -6,7 +6,7 @@ require ( | |||
code.gitea.io/gitea-vet v0.2.2-0.20220122151748-48ebc902541b | |||
code.gitea.io/sdk/gitea v0.15.1 | |||
gitea.com/go-chi/binding v0.0.0-20220309004920-114340dabecb | |||
gitea.com/go-chi/cache v0.0.0-20211201020628-dcb774c4ffea | |||
gitea.com/go-chi/cache v0.2.0 | |||
gitea.com/go-chi/captcha v0.0.0-20211013065431-70641c1a35d5 | |||
gitea.com/go-chi/session v0.0.0-20211218221615-e3605d8b28b8 | |||
gitea.com/lunny/levelqueue v0.4.1 |
@@ -72,8 +72,8 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 | |||
gitea.com/go-chi/binding v0.0.0-20220309004920-114340dabecb h1:Yy0Bxzc8R2wxiwXoG/rECGplJUSpXqCsog9PuJFgiHs= | |||
gitea.com/go-chi/binding v0.0.0-20220309004920-114340dabecb/go.mod h1:77TZu701zMXWJFvB8gvTbQ92zQ3DQq/H7l5wAEjQRKc= | |||
gitea.com/go-chi/cache v0.0.0-20210110083709-82c4c9ce2d5e/go.mod h1:k2V/gPDEtXGjjMGuBJiapffAXTv76H4snSmlJRLUhH0= | |||
gitea.com/go-chi/cache v0.0.0-20211201020628-dcb774c4ffea h1:Fq/f4hjigb5v5WpA5TfBCZOSavpHPBiB4Wkj/WsITYM= | |||
gitea.com/go-chi/cache v0.0.0-20211201020628-dcb774c4ffea/go.mod h1:k2V/gPDEtXGjjMGuBJiapffAXTv76H4snSmlJRLUhH0= | |||
gitea.com/go-chi/cache v0.2.0 h1:E0npuTfDW6CT1yD8NMDVc1SK6IeRjfmRL2zlEsCEd7w= | |||
gitea.com/go-chi/cache v0.2.0/go.mod h1:iQlVK2aKTZ/rE9UcHyz9pQWGvdP9i1eI2spOpzgCrtE= | |||
gitea.com/go-chi/captcha v0.0.0-20211013065431-70641c1a35d5 h1:J/1i8u40TbcLP/w2w2KCkgW2PelIqYkD5UOwu8IOvVU= | |||
gitea.com/go-chi/captcha v0.0.0-20211013065431-70641c1a35d5/go.mod h1:hQ9SYHKdOX968wJglb/NMQ+UqpOKwW4L+EYdvkWjHSo= | |||
gitea.com/go-chi/session v0.0.0-20211218221615-e3605d8b28b8 h1:tJQRXgZigkLeeW9LPlps9G9aMoE6LAmqigLA+wxmd1Q= |
@@ -5,11 +5,9 @@ | |||
package cache | |||
import ( | |||
"errors" | |||
"fmt" | |||
"strconv" | |||
"code.gitea.io/gitea/modules/log" | |||
"code.gitea.io/gitea/modules/setting" | |||
mc "gitea.com/go-chi/cache" | |||
@@ -35,7 +33,7 @@ func NewContext() error { | |||
if conn, err = newCache(setting.CacheService.Cache); err != nil { | |||
return err | |||
} | |||
if err = Ping(); err != nil { | |||
if err = conn.Ping(); err != nil { | |||
return err | |||
} | |||
} | |||
@@ -43,29 +41,6 @@ func NewContext() error { | |||
return err | |||
} | |||
// Ping checks if the cache service works or not, it not, it returns an error | |||
func Ping() error { | |||
if conn == nil { | |||
return errors.New("cache not available") | |||
} | |||
var err error | |||
const testKey = "__gitea_cache_test" | |||
const testVal = "test-value" | |||
if err = conn.Put(testKey, testVal, 10); err != nil { | |||
return err | |||
} | |||
val := conn.Get(testKey) | |||
if valStr, ok := val.(string); !ok || valStr != testVal { | |||
// If the cache is full, the Get may not read the expected value stored by Put. | |||
// Since we have checked that Put can success, so we just show a warning here, do not return an error to panic. | |||
log.Warn("cache (adapter:%s, config:%s) doesn't seem to work correctly, set test value '%v' but get '%v'", | |||
setting.CacheService.Cache.Adapter, setting.CacheService.Cache.Conn, | |||
testVal, val, | |||
) | |||
} | |||
return nil | |||
} | |||
// GetCache returns the currently configured cache | |||
func GetCache() mc.Cache { | |||
return conn |
@@ -153,6 +153,11 @@ func (c *RedisCacher) StartAndGC(opts cache.Options) error { | |||
return c.c.Ping(graceful.GetManager().HammerContext()).Err() | |||
} | |||
// Ping tests if the cache is alive. | |||
func (c *RedisCacher) Ping() error { | |||
return c.c.Ping(graceful.GetManager().HammerContext()).Err() | |||
} | |||
func init() { | |||
cache.Register("redis", &RedisCacher{}) | |||
} |
@@ -199,6 +199,11 @@ func (c *TwoQueueCache) StartAndGC(opts mc.Options) error { | |||
return err | |||
} | |||
// Ping tests if the cache is alive. | |||
func (c *TwoQueueCache) Ping() error { | |||
return mc.GenericPing(c) | |||
} | |||
func init() { | |||
mc.Register("twoqueue", &TwoQueueCache{}) | |||
} |
@@ -126,7 +126,7 @@ func checkCache(checks checks) status { | |||
} | |||
st := componentStatus{} | |||
if err := cache.Ping(); err != nil { | |||
if err := cache.GetCache().Ping(); err != nil { | |||
st.Status = fail | |||
st.Time = getCheckTime() | |||
log.Error("cache ping failed with error: %v", err) |