From 4fc6d98dc6e07cb8bfec99a0e049b31083fa09d1 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 7 Mar 2023 20:03:21 +0100 Subject: dashboard: speed up the admin page Do all the memcache and DB queries in parallel in order to reduce the latency. --- dashboard/app/main.go | 51 +++++++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 16 deletions(-) (limited to 'dashboard') diff --git a/dashboard/app/main.go b/dashboard/app/main.go index e6d064c81..df1f2a326 100644 --- a/dashboard/app/main.go +++ b/dashboard/app/main.go @@ -578,27 +578,46 @@ func handleAdmin(c context.Context, w http.ResponseWriter, r *http.Request) erro if err != nil { return err } - memcacheStats, err := memcache.Stats(c) - if err != nil { + var ( + memcacheStats *memcache.Statistics + managers []*uiManager + errorLog []byte + recentJobs []*uiJob + pendingJobs []*uiJob + runningJobs []*uiJob + ) + g, _ := errgroup.WithContext(context.Background()) + g.Go(func() error { + var err error + memcacheStats, err = memcache.Stats(c) return err - } - managers, err := loadManagers(c, accessLevel, "", nil) - if err != nil { + }) + g.Go(func() error { + var err error + managers, err = loadManagers(c, accessLevel, "", nil) return err - } - errorLog, err := fetchErrorLogs(c) - if err != nil { + }) + g.Go(func() error { + var err error + errorLog, err = fetchErrorLogs(c) return err - } - recentJobs, err := loadRecentJobs(c) - if err != nil { + }) + g.Go(func() error { + var err error + recentJobs, err = loadRecentJobs(c) return err - } - pendingJobs, err := loadPendingJobs(c) - if err != nil { + }) + g.Go(func() error { + var err error + pendingJobs, err = loadPendingJobs(c) return err - } - runningJobs, err := loadRunningJobs(c) + }) + g.Go(func() error { + var err error + runningJobs, err = loadRunningJobs(c) + return err + }) + err = g.Wait() if err != nil { return err } -- cgit mrf-deployment