summaryrefslogtreecommitdiffstats
path: root/modules/cache
diff options
context:
space:
mode:
authorttys3 <41882455+ttys3@users.noreply.github.com>2022-05-04 19:56:20 +0800
committerGitHub <noreply@github.com>2022-05-04 14:56:20 +0300
commite933f314268e41477c85e44a255667c02b19f231 (patch)
tree23a610cffe6e2c5ef01ca677c391f1f8b86fe824 /modules/cache
parent3114cd30b817692556306ce6261ace2b58c54b76 (diff)
downloadgitea-e933f314268e41477c85e44a255667c02b19f231.tar.gz
gitea-e933f314268e41477c85e44a255667c02b19f231.zip
Add health check endpoint (#18465)
* chore: add health check endpoint docs: update document about health check fix: fix up Sqlite3 ping. current ping will success even if the db file is missing fix: do not expose privacy information in output field * refactor: remove HealthChecker struct * Added `/api/healthz` to install routes. This was needed for using /api/healthz endpoint in Docker healthchecks, otherwise, Docker would never become healthy if using healthz endpoint and users would not be able to complete the installation of Gitea. * Update modules/cache/cache.go * fine tune * Remove unnecessary test code. Now there are 2 routes for installation (and maybe more in future) Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Marcos de Oliveira <marcossantos@furb.br>
Diffstat (limited to 'modules/cache')
-rw-r--r--modules/cache/cache.go37
1 files changed, 25 insertions, 12 deletions
diff --git a/modules/cache/cache.go b/modules/cache/cache.go
index 0198f8da73..fd32aa153b 100644
--- a/modules/cache/cache.go
+++ b/modules/cache/cache.go
@@ -5,6 +5,7 @@
package cache
import (
+ "errors"
"fmt"
"strconv"
@@ -34,25 +35,37 @@ func NewContext() error {
if conn, err = newCache(setting.CacheService.Cache); err != nil {
return err
}
- const testKey = "__gitea_cache_test"
- const testVal = "test-value"
- if err = conn.Put(testKey, testVal, 10); err != nil {
+ if err = Ping(); 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 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