add m3db client timeout check (#693)

This commit is contained in:
yubo 2021-05-31 15:35:00 +08:00 committed by GitHub
parent bbbd7faeb1
commit 37abf19f0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 6 deletions

View File

@ -1,7 +1,9 @@
package backend package backend
import ( import (
"log" "context"
"fmt"
"time"
"github.com/didi/nightingale/v4/src/modules/server/backend/influxdb" "github.com/didi/nightingale/v4/src/modules/server/backend/influxdb"
"github.com/didi/nightingale/v4/src/modules/server/backend/m3db" "github.com/didi/nightingale/v4/src/modules/server/backend/m3db"
@ -29,7 +31,7 @@ var (
m3dbDataSource *m3db.Client m3dbDataSource *m3db.Client
) )
func Init(cfg BackendSection) { func Init(cfg BackendSection) error {
defaultDataSource = cfg.DataSource defaultDataSource = cfg.DataSource
StraPath = cfg.StraPath StraPath = cfg.StraPath
@ -77,10 +79,26 @@ func Init(cfg BackendSection) {
// init m3db // init m3db
if cfg.M3db.Enabled { if cfg.M3db.Enabled {
var err error var err error
m3dbDataSource, err = m3db.NewClient(cfg.M3db) d := time.Now().Add(time.Second * 5)
ctx, cancel := context.WithDeadline(context.Background(), d)
go func() {
m3dbDataSource, err = m3db.NewClient(cfg.M3db)
if err != nil {
err = fmt.Errorf("unable to new m3db client: %v", err)
}
RegisterDataSource(cfg.M3db.Name, m3dbDataSource)
cancel()
}()
<-ctx.Done()
if err != nil { if err != nil {
log.Fatalf("unable to new m3db client: %v", err) return err
}
if err := ctx.Err(); err != nil && err != context.Canceled {
return fmt.Errorf("new m3db client err: %s", err)
} }
RegisterDataSource(cfg.M3db.Name, m3dbDataSource)
} }
return nil
} }

View File

@ -122,7 +122,9 @@ func main() {
} }
aggr.Init(conf.Transfer.Aggr) aggr.Init(conf.Transfer.Aggr)
backend.Init(conf.Transfer.Backend) if err := backend.Init(conf.Transfer.Backend); err != nil {
log.Fatalf("backend fail: %v", err)
}
// init judge // init judge
go judge.InitJudge(conf.Judge.Backend, config.Ident) go judge.InitJudge(conf.Judge.Backend, config.Ident)