Skip to content

Commit

Permalink
Add stats for resets rate limited
Browse files Browse the repository at this point in the history
Summary: See title

Reviewed By: afrind

Differential Revision: D50751471

fbshipit-source-id: a2b6bd22b2ae4d37dad34a95b04510cd3701b4df
  • Loading branch information
Aman Sharma authored and facebook-github-bot committed Nov 6, 2023
1 parent 1b007b9 commit f57f226
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 3 deletions.
8 changes: 6 additions & 2 deletions proxygen/lib/http/codec/ResetsRateLimitFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,15 @@ class ResetsRateLimitFilter : public RateLimitFilter {
}

void recordNumEventsInCurrentInterval(uint32_t numEvents) override {
// TODO: Add stats for number of resets in the current interval
if (httpSessionStats_) {
httpSessionStats_->recordResetsInInterval(numEvents);
}
}

void recordRateLimitBreached() override {
// TODO: Add stats for number of resets in the current interval
if (httpSessionStats_) {
httpSessionStats_->recordResetsRateLimited();
}
}

uint32_t getMaxEventsPerInvervalLowerBound() const override {
Expand Down
4 changes: 4 additions & 0 deletions proxygen/lib/http/session/HTTPSessionStats.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,10 @@ class HTTPSessionStats : public TTLBAStats {
}
virtual void recordHeadersRateLimited() noexcept {
}
virtual void recordResetsInInterval(int64_t) noexcept {
}
virtual void recordResetsRateLimited() noexcept {
}
};

} // namespace proxygen
22 changes: 21 additions & 1 deletion proxygen/lib/http/stats/ThreadLocalHTTPSessionStats.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ TLHTTPSessionStats::TLHTTPSessionStats(const std::string& prefix)
facebook::fb303::SUM),
headersRateLimited(prefix + "_headers_rate_limited",
facebook::fb303::SUM),
resetsRateLimited(prefix + "_resets_rate_limited", facebook::fb303::SUM),
txnsPerSession(prefix + "_txn_per_session",
1,
0,
Expand Down Expand Up @@ -75,7 +76,18 @@ TLHTTPSessionStats::TLHTTPSessionStats(const std::string& prefix)
facebook::fb303::AVG,
50,
99,
100) {
100),
resetsInInterval(prefix + "_resets_in_interval",
1 /* bucketWidth */,
0 /* min */,
200 /* max, keep in sync with
RestsRateLimitFilter::kDefaultMaxEventsPerInterval
*/
,
facebook::fb303::AVG,
50,
99,
100) {
}

void TLHTTPSessionStats::recordTransactionOpened() noexcept {
Expand Down Expand Up @@ -191,4 +203,12 @@ void TLHTTPSessionStats::recordHeadersRateLimited() noexcept {
headersRateLimited.add(1);
}

void TLHTTPSessionStats::recordResetsInInterval(int64_t quantity) noexcept {
resetsInInterval.add(quantity);
}

void TLHTTPSessionStats::recordResetsRateLimited() noexcept {
resetsRateLimited.add(1);
}

} // namespace proxygen
4 changes: 4 additions & 0 deletions proxygen/lib/http/stats/ThreadLocalHTTPSessionStats.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ class TLHTTPSessionStats : public HTTPSessionStats {
void recordControlMsgRateLimited() noexcept override;
void recordHeadersInInterval(int64_t quantity) noexcept override;
void recordHeadersRateLimited() noexcept override;
void recordResetsInInterval(int64_t quantity) noexcept override;
void recordResetsRateLimited() noexcept override;

BaseStats::TLCounter txnsOpen;
BaseStats::TLCounter pendingBufferedReadBytes;
Expand All @@ -71,10 +73,12 @@ class TLHTTPSessionStats : public HTTPSessionStats {
BaseStats::TLTimeseries ttbtxExceedLimit;
BaseStats::TLTimeseries ctrlMsgsRateLimited;
BaseStats::TLTimeseries headersRateLimited;
BaseStats::TLTimeseries resetsRateLimited;
BaseStats::TLHistogram txnsPerSession;
BaseStats::TLHistogram sessionIdleTime;
BaseStats::TLHistogram ctrlMsgsInInterval;
BaseStats::TLHistogram headersInInterval;
BaseStats::TLHistogram resetsInInterval;
};

} // namespace proxygen

0 comments on commit f57f226

Please sign in to comment.