aboutsummaryrefslogtreecommitdiffstats
path: root/dashboard
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2023-03-07 20:03:21 +0100
committerAleksandr Nogikh <wp32pw@gmail.com>2023-03-08 11:20:21 +0100
commit4fc6d98dc6e07cb8bfec99a0e049b31083fa09d1 (patch)
tree78289217860b65a957943f655ac45a7587d8448f /dashboard
parentf6ef8c9d1dbba2449eec47d79ae047c30476dff2 (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.go51
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
}