Fix global rateCollector init multiple times (#23703)

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
pull/23719/head
congqixia 2023-04-26 10:16:36 +08:00 committed by GitHub
parent 6f4ed517de
commit 796f9355ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 5 deletions

View File

@ -84,9 +84,6 @@ var _ types.DataNode = (*DataNode)(nil)
// Params from config.yaml
var Params *paramtable.ComponentParam = paramtable.Get()
// rateCol is global rateCollector in DataNode.
var rateCol *rateCollector
// DataNode communicates with outside services and unioun all
// services in datanode package.
//
@ -220,8 +217,7 @@ func (node *DataNode) initSession() error {
// initRateCollector creates and starts rateCollector in QueryNode.
func (node *DataNode) initRateCollector() error {
var err error
rateCol, err = newRateCollector()
err := initGlobalRateCollector()
if err != nil {
return err
}

View File

@ -23,6 +23,10 @@ import (
"github.com/milvus-io/milvus/pkg/util/typeutil"
)
// rateCol is global rateCollector in DataNode.
var rateCol *rateCollector
var initOnce sync.Once
// rateCollector helps to collect and calculate values (like rate, timeTick and etc...).
type rateCollector struct {
*ratelimitutil.RateCollector
@ -31,6 +35,14 @@ type rateCollector struct {
flowGraphTt map[string]Timestamp
}
func initGlobalRateCollector() error {
var err error
initOnce.Do(func() {
rateCol, err = newRateCollector()
})
return err
}
// newRateCollector returns a new rateCollector.
func newRateCollector() (*rateCollector, error) {
rc, err := ratelimitutil.NewRateCollector(ratelimitutil.DefaultWindow, ratelimitutil.DefaultGranularity)