File tree Expand file tree Collapse file tree 4 files changed +18
-1
lines changed
Expand file tree Collapse file tree 4 files changed +18
-1
lines changed Original file line number Diff line number Diff line change 20792079 "core/src/utils/statistics/impl/histogram_view_utils.hpp":"taxi/uservices/userver/core/src/utils/statistics/impl/histogram_view_utils.hpp",
20802080 "core/src/utils/statistics/impl/rate_serialization.hpp":"taxi/uservices/userver/core/src/utils/statistics/impl/rate_serialization.hpp",
20812081 "core/src/utils/statistics/json.cpp":"taxi/uservices/userver/core/src/utils/statistics/json.cpp",
2082- "core/src/utils/statistics/labels.cpp":"taxi/uservices/userver/core/src/utils/statistics/labels.cpp",
20832082 "core/src/utils/statistics/metadata.cpp":"taxi/uservices/userver/core/src/utils/statistics/metadata.cpp",
20842083 "core/src/utils/statistics/metric_value.cpp":"taxi/uservices/userver/core/src/utils/statistics/metric_value.cpp",
20852084 "core/src/utils/statistics/metrics_storage.cpp":"taxi/uservices/userver/core/src/utils/statistics/metrics_storage.cpp",
56495648 "universal/src/utils/small_string_benchmark.cpp":"taxi/uservices/userver/universal/src/utils/small_string_benchmark.cpp",
56505649 "universal/src/utils/small_string_test.cpp":"taxi/uservices/userver/universal/src/utils/small_string_test.cpp",
56515650 "universal/src/utils/span_test.cpp":"taxi/uservices/userver/universal/src/utils/span_test.cpp",
5651+ "universal/src/utils/statistics/labels.cpp":"taxi/uservices/userver/universal/src/utils/statistics/labels.cpp",
56525652 "universal/src/utils/statistics/rate.cpp":"taxi/uservices/userver/universal/src/utils/statistics/rate.cpp",
56535653 "universal/src/utils/statistics/rate_counter.cpp":"taxi/uservices/userver/universal/src/utils/statistics/rate_counter.cpp",
56545654 "universal/src/utils/statistics/request.cpp":"taxi/uservices/userver/universal/src/utils/statistics/request.cpp",
Original file line number Diff line number Diff line change 66#include < atomic>
77#include < chrono>
88
9+ #include < userver/utils/statistics/rate_counter.hpp>
10+
911USERVER_NAMESPACE_BEGIN
1012
1113namespace utils {
@@ -88,15 +90,21 @@ class TokenBucket final {
8890 static double GetRatePs (Duration interval);
8991
9092private:
93+ friend void DumpMetric (statistics::Writer& writer, const TokenBucket& bucket);
94+
9195 void Update ();
9296
9397 std::atomic<size_t > max_size_;
9498 std::atomic<size_t > token_refill_amount_;
9599 std::atomic<Duration> token_refill_interval_;
96100 std::atomic<size_t > tokens_;
97101 std::atomic<TimePoint> last_update_;
102+
103+ statistics::RateCounter obtain_failed_;
98104};
99105
106+ void DumpMetric (statistics::Writer& writer, const TokenBucket& bucket);
107+
100108} // namespace utils
101109
102110USERVER_NAMESPACE_END
File renamed without changes.
Original file line number Diff line number Diff line change 33#include < stdexcept>
44
55#include < userver/utils/mock_now.hpp>
6+ #include < userver/utils/statistics/writer.hpp>
67
78USERVER_NAMESPACE_BEGIN
89
@@ -112,6 +113,7 @@ bool TokenBucket::Obtain() { return ObtainAll(1); }
112113bool TokenBucket::ObtainAll (size_t count) {
113114 if (max_size_ < count) {
114115 // not satisfiable
116+ obtain_failed_.Add (statistics::Rate{count});
115117 return false ;
116118 }
117119
@@ -125,6 +127,7 @@ bool TokenBucket::ObtainAll(size_t count) {
125127 auto expected = tokens_.load ();
126128 do {
127129 if (expected < count) {
130+ obtain_failed_.Add (statistics::Rate{count});
128131 return false ;
129132 }
130133 } while (!tokens_.compare_exchange_strong (expected, expected - count));
@@ -188,6 +191,12 @@ void TokenBucket::Update() {
188191 }
189192}
190193
194+ void DumpMetric (statistics::Writer& writer, const TokenBucket& bucket) {
195+ const static std::string kObtainFailed = " obtain_failed" ;
196+
197+ writer[kObtainFailed ] = bucket.obtain_failed_ .Load ();
198+ }
199+
191200} // namespace utils
192201
193202USERVER_NAMESPACE_END
You can’t perform that action at this time.
0 commit comments