mirror of https://github.com/milvus-io/milvus.git
Fix global rateCollector init multiple times (#23703)
Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>pull/23719/head
parent
6f4ed517de
commit
796f9355ee
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue