Skip to content

Commit 16f3637

Browse files
authored
fix bug: throttledRateLimiter is not once per minute, but five times (#7156)
1 parent dc46ccd commit 16f3637

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

sdk/common/src/main/java/io/opentelemetry/sdk/internal/ThrottlingLogger.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ public ThrottlingLogger(Logger delegate) {
4141
this.fastRateLimiter =
4242
new RateLimiter(RATE_LIMIT / rateTimeUnit.toSeconds(1), RATE_LIMIT, clock);
4343
this.throttledRateLimiter =
44-
new RateLimiter(RATE_LIMIT / rateTimeUnit.toSeconds(1), THROTTLED_RATE_LIMIT, clock);
44+
new RateLimiter(
45+
THROTTLED_RATE_LIMIT / rateTimeUnit.toSeconds(1), THROTTLED_RATE_LIMIT, clock);
4546
}
4647

4748
/** Log a message at the given level. */

sdk/common/src/test/java/io/opentelemetry/sdk/internal/ThrottlingLoggerTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,41 @@ void afterAMinuteLetOneThrough() {
144144
assertThat(logs.getEvents()).hasSize(9);
145145
assertThat(logs.getEvents().get(8).getMessage()).isEqualTo("oh no!");
146146
}
147+
148+
@Test
149+
void allowOnlyOneLogPerMinuteAfterSuppression() {
150+
TestClock clock = TestClock.create();
151+
ThrottlingLogger logger = new ThrottlingLogger(realLogger, clock);
152+
153+
logger.log(Level.WARNING, "oh no!");
154+
logger.log(Level.WARNING, "oh no!");
155+
logger.log(Level.WARNING, "oh no!");
156+
logger.log(Level.WARNING, "oh no!");
157+
logger.log(Level.WARNING, "oh no!");
158+
159+
logger.log(Level.WARNING, "oh no I should trigger suppression!");
160+
logger.log(Level.WARNING, "oh no I should be suppressed!");
161+
162+
assertThat(logs.getEvents()).hasSize(7);
163+
164+
clock.advance(Duration.ofMillis(12_001));
165+
logger.log(Level.WARNING, "suppression 1");
166+
clock.advance(Duration.ofMillis(12_001));
167+
logger.log(Level.WARNING, "suppression 2");
168+
clock.advance(Duration.ofMillis(12_001));
169+
logger.log(Level.WARNING, "suppression 3");
170+
clock.advance(Duration.ofMillis(12_001));
171+
logger.log(Level.WARNING, "suppression 4");
172+
clock.advance(Duration.ofMillis(12_001));
173+
logger.log(Level.WARNING, "allowed 1");
174+
175+
logs.assertDoesNotContain("suppression 1");
176+
logs.assertDoesNotContain("suppression 2");
177+
logs.assertDoesNotContain("suppression 3");
178+
logs.assertDoesNotContain("suppression 4");
179+
logs.assertContains("allowed 1");
180+
181+
assertThat(logs.getEvents()).hasSize(8);
182+
assertThat(logs.getEvents().get(7).getMessage()).isEqualTo("allowed 1");
183+
}
147184
}

0 commit comments

Comments
 (0)