Skip to content

Commit 6f69988

Browse files
Simplify usage of Bucket4j via using new API method consumeIgnoringRateLimits which was added in the version 4.8.0
1 parent a861a80 commit 6f69988

File tree

2 files changed

+3
-25
lines changed

2 files changed

+3
-25
lines changed

extended/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,6 @@
140140
<maven.compiler.source>${java.version}</maven.compiler.source>
141141
<maven.compiler.target>${java.version}</maven.compiler.target>
142142
<slf4jVersion>1.7.7</slf4jVersion>
143-
<bucket4jVersion>4.4.1</bucket4jVersion>
143+
<bucket4jVersion>4.8.0</bucket4jVersion>
144144
</properties>
145145
</project>

extended/src/main/java/io/kubernetes/client/extended/workqueue/ratelimiter/BucketRateLimiter.java

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
import io.github.bucket4j.Refill;
77
import io.github.bucket4j.local.SynchronizationStrategy;
88
import java.time.Duration;
9-
import java.util.concurrent.ScheduledFuture;
10-
import java.util.concurrent.ScheduledThreadPoolExecutor;
11-
import java.util.concurrent.TimeUnit;
129

1310
/** A light-weight token bucket implementation for RateLimiter. */
1411
public class BucketRateLimiter<T> implements RateLimiter<T> {
@@ -31,9 +28,8 @@ public BucketRateLimiter(long capacity, long tokensGeneratedInPeriod, Duration p
3128

3229
@Override
3330
public Duration when(T item) {
34-
DelayGetter delayGetter = new DelayGetter();
35-
bucket.asAsyncScheduler().consume(1, delayGetter).complete(null);
36-
return delayGetter.getDelay();
31+
long overdraftNanos = bucket.consumeIgnoringRateLimits(1);
32+
return Duration.ofNanos(overdraftNanos);
3733
}
3834

3935
@Override
@@ -43,22 +39,4 @@ public void forget(T item) {}
4339
public int numRequeues(T item) {
4440
return 0;
4541
}
46-
47-
private class DelayGetter extends ScheduledThreadPoolExecutor {
48-
private Duration delay = Duration.ZERO;
49-
50-
@Override
51-
public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
52-
this.delay = Duration.ofNanos(unit.toNanos(delay));
53-
return null;
54-
}
55-
56-
private DelayGetter() {
57-
super(0);
58-
}
59-
60-
private Duration getDelay() {
61-
return delay;
62-
}
63-
}
6442
}

0 commit comments

Comments
 (0)