diff --git a/src/bvar/multi_dimension.h b/src/bvar/multi_dimension.h index 27f3e5144f..43be82ccfd 100644 --- a/src/bvar/multi_dimension.h +++ b/src/bvar/multi_dimension.h @@ -134,10 +134,15 @@ class MultiDimension : public MVariable { // Remove all stats so those not count and dump void delete_stats(); + + void set_max_stats_count(size_t max_stats_count) { + _max_stats_count = max_stats_count; + } static size_t init_flatmap(MetricMap& bg); private: + size_t _max_stats_count; MetricMapDBD _metric_map; }; diff --git a/src/bvar/multi_dimension_inl.h b/src/bvar/multi_dimension_inl.h index 212f431b96..a0158b15db 100644 --- a/src/bvar/multi_dimension_inl.h +++ b/src/bvar/multi_dimension_inl.h @@ -37,6 +37,7 @@ template inline MultiDimension::MultiDimension(const key_type& labels) : Base(labels) + , _max_stats_count(MAX_MULTI_DIMENSION_STATS_COUNT) { _metric_map.Modify(init_flatmap); } @@ -45,9 +46,8 @@ template inline MultiDimension::MultiDimension(const butil::StringPiece& name, const key_type& labels) - : Base(labels) + : MultiDimension(labels) { - _metric_map.Modify(init_flatmap); this->expose(name); } @@ -56,9 +56,8 @@ inline MultiDimension::MultiDimension(const butil::StringPiece& prefix, const butil::StringPiece& name, const key_type& labels) - : Base(labels) + : MultiDimension(labels) { - _metric_map.Modify(init_flatmap); this->expose_as(prefix, name); } @@ -190,8 +189,8 @@ T* MultiDimension::get_stats_impl(const key_type& labels_value, STATS_OP stat return nullptr; } - if (metric_map_ptr->size() > MAX_MULTI_DIMENSION_STATS_COUNT) { - LOG(ERROR) << "Too many stats seen, overflow detected, max stats count:" << MAX_MULTI_DIMENSION_STATS_COUNT; + if (metric_map_ptr->size() > _max_stats_count) { + LOG(ERROR) << "Too many stats seen, overflow detected, max stats count=" << _max_stats_count; return nullptr; } } diff --git a/test/Makefile b/test/Makefile index cb0465446c..f09b398dfc 100644 --- a/test/Makefile +++ b/test/Makefile @@ -159,6 +159,8 @@ ifeq ($(SYSTEM), Darwin) DYNAMIC_LINKINGS+=-Wl,-U,_bthread_getspecific DYNAMIC_LINKINGS+=-Wl,-U,_bthread_setspecific DYNAMIC_LINKINGS+=-Wl,-U,_bthread_key_create + DYNAMIC_LINKINGS+=-Wl,-U,_bthread_self + DYNAMIC_LINKINGS+=-Wl,-U,_bthread_timed_connect endif UT_DYNAMIC_LINKINGS = -lbrpc.dbg $(DYNAMIC_LINKINGS)