diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2023-03-07 20:03:21 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2023-03-08 11:20:21 +0100 |
| commit | 4fc6d98dc6e07cb8bfec99a0e049b31083fa09d1 (patch) | |
| tree | 78289217860b65a957943f655ac45a7587d8448f /dashboard | |
| parent | f6ef8c9d1dbba2449eec47d79ae047c30476dff2 (diff) | |
dashboard: speed up the admin page
Do all the memcache and DB queries in parallel in order to reduce the
latency.
Diffstat (limited to 'dashboard')
| -rw-r--r-- | dashboard/app/main.go | 51 |
1 files changed, 35 insertions, 16 deletions
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 } |
