From fd5a76bea7f110b6dc92a377b2c9a346e8caf62e Mon Sep 17 00:00:00 2001 From: Tyler Ouyang Date: Tue, 12 Nov 2024 16:00:40 -0800 Subject: [PATCH] Addressed comments --- .../com/pinterest/deployservice/common/Jenkins.java | 2 +- .../teletraan/universal/http/RetryInterceptor.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/deploy-service/common/src/main/java/com/pinterest/deployservice/common/Jenkins.java b/deploy-service/common/src/main/java/com/pinterest/deployservice/common/Jenkins.java index a083ab3c3d..08341607cb 100644 --- a/deploy-service/common/src/main/java/com/pinterest/deployservice/common/Jenkins.java +++ b/deploy-service/common/src/main/java/com/pinterest/deployservice/common/Jenkins.java @@ -27,7 +27,7 @@ /** Wrapper for Jenkins API calls */ public class Jenkins { private static final Logger LOG = LoggerFactory.getLogger(Jenkins.class); - private static final HttpClient httpClient = HttpClient.builder().maxRetries(3).build(); + private static final HttpClient httpClient = HttpClient.builder().build(); private String jenkinsUrl; private String jenkinsRemoteToken; diff --git a/deploy-service/universal/src/main/java/com/pinterest/teletraan/universal/http/RetryInterceptor.java b/deploy-service/universal/src/main/java/com/pinterest/teletraan/universal/http/RetryInterceptor.java index 51f424a86c..4d66e3f8d8 100644 --- a/deploy-service/universal/src/main/java/com/pinterest/teletraan/universal/http/RetryInterceptor.java +++ b/deploy-service/universal/src/main/java/com/pinterest/teletraan/universal/http/RetryInterceptor.java @@ -15,6 +15,7 @@ */ package com.pinterest.teletraan.universal.http; +import com.google.common.collect.ImmutableList; import java.io.IOException; import java.util.concurrent.TimeUnit; import okhttp3.Interceptor; @@ -22,6 +23,8 @@ import okhttp3.Response; public class RetryInterceptor implements Interceptor { + private static final ImmutableList RETRY_CODES = + ImmutableList.of(429, 500, 502, 503, 504); private final int maxRetries; private final long retryInterval; @@ -39,13 +42,17 @@ public Response intercept(Chain chain) throws IOException { for (int i = 0; i < maxRetries; i++) { try { response = chain.proceed(request); - if (response.isSuccessful() || !shouldRetry(response)) { + if (response.isSuccessful()) { return response; } } catch (IOException e) { lastException = e; } + if (!shouldRetry(response) || i == maxRetries - 1) { + break; + } + try { long backoff = (long) Math.pow(2, i) * retryInterval; TimeUnit.MILLISECONDS.sleep(backoff); @@ -63,7 +70,6 @@ public Response intercept(Chain chain) throws IOException { } private boolean shouldRetry(Response response) { - int code = response.code(); - return code == 429 || code == 500 || code == 502 || code == 503 || code == 504; + return RETRY_CODES.contains(response.code()); } }