Skip to content

Commit

Permalink
wip: go back to Guava rate limiter.
Browse files Browse the repository at this point in the history
  • Loading branch information
hessjcg committed Jul 18, 2023
1 parent 875cde6 commit 78171f4
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 14 deletions.
6 changes: 0 additions & 6 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -129,12 +129,6 @@
</dependencyManagement>

<dependencies>
<dependency>
<groupId>dev.failsafe</groupId>
<artifactId>failsafe</artifactId>
<version>3.3.2</version>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningScheduledExecutorService;
import com.google.common.util.concurrent.RateLimiter;
import com.google.common.util.concurrent.Uninterruptibles;
import com.google.errorprone.annotations.concurrent.GuardedBy;
import dev.failsafe.RateLimiter;
import java.io.IOException;
import java.security.KeyPair;
import java.time.Duration;
Expand Down Expand Up @@ -57,7 +57,7 @@ class CloudSqlInstance {
private final ListenableFuture<KeyPair> keyPair;
private final Object instanceDataGuard = new Object();
// Limit forced refreshes to 1 every minute.
private final RateLimiter<Object> forcedRenewRateLimiter;
private final RateLimiter forcedRenewRateLimiter;

private final RefreshCalculator refreshCalculator = new RefreshCalculator();

Expand All @@ -71,7 +71,7 @@ class CloudSqlInstance {
private boolean forceRefreshRunning;

static final RateLimiter defaultRateLimiter() {
return RateLimiter.burstyBuilder(2, Duration.ofSeconds(30)).build();
return RateLimiter.create(2.0 / 60.0); // 2 requests/minute
}

/**
Expand All @@ -89,7 +89,7 @@ static final RateLimiter defaultRateLimiter() {
CredentialFactory tokenSourceFactory,
ListeningScheduledExecutorService executor,
ListenableFuture<KeyPair> keyPair,
RateLimiter<Object> forcedRenewRateLimiter) {
RateLimiter forcedRenewRateLimiter) {
this.instanceName = new CloudSqlInstanceName(connectionName);
this.instanceDataSupplier = instanceDataSupplier;
this.authType = authType;
Expand Down Expand Up @@ -194,7 +194,7 @@ private InstanceData performRefresh() throws InterruptedException, ExecutionExce
logger.fine(
String.format("[%s] Refresh Operation: Acquiring rate limiter permit.", instanceName));
// To avoid unreasonable SQL Admin API usage, use a rate limit to throttle our usage.
forcedRenewRateLimiter.acquirePermit();
forcedRenewRateLimiter.acquire();
logger.fine(
String.format(
"[%s] Refresh Operation: Acquired rate limiter permit. Starting refresh...",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningScheduledExecutorService;
import dev.failsafe.RateLimiter;
import com.google.common.util.concurrent.RateLimiter;
import java.io.IOException;
import java.security.KeyPair;
import java.sql.Date;
Expand Down Expand Up @@ -293,7 +293,7 @@ private ListeningScheduledExecutorService newTestExecutor() {
return CoreSocketFactory.getDefaultExecutor();
}

private RateLimiter<Object> newRateLimiter() {
return RateLimiter.burstyBuilder(2, Duration.ofMillis(50)).build();
private RateLimiter newRateLimiter() {
return RateLimiter.create(20.0); // 20/sec = every 50 ms
}
}

0 comments on commit 78171f4

Please sign in to comment.