@@ -32,6 +32,7 @@ import (
3232
3333 "go.uber.org/atomic"
3434 "golang.org/x/sync/semaphore"
35+ "golang.org/x/sync/singleflight"
3536
3637 "github.com/vkcom/statshouse/internal/chutil"
3738
@@ -1436,6 +1437,8 @@ func HandleGetHistory(r *httpRequestHandler) {
14361437 respondJSON (r , resp , defaultCacheTTL , 0 , err )
14371438}
14381439
1440+ var group singleflight.Group
1441+
14391442func HandleGetHealthcheck (r * httpRequestHandler ) {
14401443 now := time .Now ()
14411444 req := seriesRequest {
@@ -1444,13 +1447,16 @@ func HandleGetHealthcheck(r *httpRequestHandler) {
14441447 to : now ,
14451448 promQL : healthcheckQuery ,
14461449 }
1447- _ , cancel , err := r .handleSeriesRequestS (r .Context (), req , make ([]seriesResponse , 2 ))
1450+ _ , err , _ := group .Do ("healthcheck" , func () (interface {}, error ) {
1451+ _ , cancel , err := r .handleSeriesRequestS (r .Context (), req , make ([]seriesResponse , 2 ))
1452+ cancel ()
1453+ return nil , err
1454+ })
14481455 if err != nil {
14491456 log .Printf ("[error] healtcheck failed: %v" , err )
14501457 respondJSON (r , nil , 0 , 0 , httpErr (500 , err ))
14511458 return
14521459 }
1453- defer cancel ()
14541460 respondJSON (r , nil , 0 , 0 , nil )
14551461}
14561462
0 commit comments