From c0631963487790b901d281202df69282e5e2efd3 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Tue, 30 Jun 2020 17:50:27 +0200 Subject: dashboard/app: add memcache to admin interface Add memcache statistics and flush action to the admin page in preparation for actually using memcache in future commits. --- dashboard/app/admin.html | 24 ++++++++++++++++++++++++ dashboard/app/main.go | 32 ++++++++++++++++++++++++-------- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/dashboard/app/admin.html b/dashboard/app/admin.html index 172070821..bce5d2cda 100644 --- a/dashboard/app/admin.html +++ b/dashboard/app/admin.html @@ -22,6 +22,30 @@ Main page.

+ {{with $.MemcacheStats}} + + + + + + + + + + + + + + + + + + + + +
Memcache stats:
HitsMissesByteHitsItemsBytesOldest
{{.Hits}}{{.Misses}}{{.ByteHits}}{{.Items}}{{.Bytes}}{{.Oldest}}flush
+ {{end}} + {{template "manager_list" $.Managers}} {{template "job_list" $.Jobs}} diff --git a/dashboard/app/main.go b/dashboard/app/main.go index 1039d230b..270a1750b 100644 --- a/dashboard/app/main.go +++ b/dashboard/app/main.go @@ -19,6 +19,7 @@ import ( "golang.org/x/net/context" db "google.golang.org/appengine/datastore" "google.golang.org/appengine/log" + "google.golang.org/appengine/memcache" ) // This file contains web UI http handlers. @@ -58,10 +59,11 @@ type uiTerminalPage struct { } type uiAdminPage struct { - Header *uiHeader - Log []byte - Managers []*uiManager - Jobs *uiJobList + Header *uiHeader + Log []byte + Managers []*uiManager + Jobs *uiJobList + MemcacheStats *memcache.Statistics } type uiManager struct { @@ -284,10 +286,23 @@ func handleAdmin(c context.Context, w http.ResponseWriter, r *http.Request) erro if accessLevel != AccessAdmin { return ErrAccess } + switch action := r.FormValue("action"); action { + case "": + case "memcache_flush": + if err := memcache.Flush(c); err != nil { + return fmt.Errorf("failed to flush memcache: %v", err) + } + default: + return fmt.Errorf("unknown action %q", action) + } hdr, err := commonHeader(c, r, w, "") if err != nil { return err } + memcacheStats, err := memcache.Stats(c) + if err != nil { + return err + } managers, err := loadManagers(c, accessLevel, "") if err != nil { return err @@ -301,10 +316,11 @@ func handleAdmin(c context.Context, w http.ResponseWriter, r *http.Request) erro return err } data := &uiAdminPage{ - Header: hdr, - Log: errorLog, - Managers: managers, - Jobs: &uiJobList{Jobs: jobs}, + Header: hdr, + Log: errorLog, + Managers: managers, + Jobs: &uiJobList{Jobs: jobs}, + MemcacheStats: memcacheStats, } return serveTemplate(w, "admin.html", data) } -- cgit mrf-deployment