diff --git a/exporters/sender/okhttp/src/main/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptor.java b/exporters/sender/okhttp/src/main/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptor.java index 9f6cc4729f5..7c3a3bfab80 100644 --- a/exporters/sender/okhttp/src/main/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptor.java +++ b/exporters/sender/okhttp/src/main/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptor.java @@ -10,6 +10,7 @@ import io.opentelemetry.sdk.common.export.RetryPolicy; import java.io.IOException; import java.net.ConnectException; +import java.net.SocketException; import java.net.SocketTimeoutException; import java.net.UnknownHostException; import java.util.StringJoiner; @@ -158,12 +159,15 @@ static boolean isRetryableException(IOException e) { // Known retryable ConnectTimeout messages: "Failed to connect to // localhost/[0:0:0:0:0:0:0:1]:62611" // Known retryable UnknownHostException messages: "xxxxxx.com" + // Known retryable SocketException: Socket closed if (e instanceof SocketTimeoutException) { return true; } else if (e instanceof ConnectException) { return true; } else if (e instanceof UnknownHostException) { return true; + } else if (e instanceof SocketException) { + return true; } return false; } diff --git a/exporters/sender/okhttp/src/test/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptorTest.java b/exporters/sender/okhttp/src/test/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptorTest.java index fa7604fb99d..3ba83683359 100644 --- a/exporters/sender/okhttp/src/test/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptorTest.java +++ b/exporters/sender/okhttp/src/test/java/io/opentelemetry/exporter/sender/okhttp/internal/RetryInterceptorTest.java @@ -26,6 +26,7 @@ import java.net.ConnectException; import java.net.HttpRetryException; import java.net.ServerSocket; +import java.net.SocketException; import java.net.SocketTimeoutException; import java.net.UnknownHostException; import java.time.Duration; @@ -237,6 +238,8 @@ private static Stream isRetryableExceptionArgs() { Arguments.of(new SocketTimeoutException(), true), // Should retry on UnknownHostExceptions Arguments.of(new UnknownHostException("host"), true), + // Should retry on SocketException + Arguments.of(new SocketException("closed"), true), // Should retry on ConnectException Arguments.of( new ConnectException("Failed to connect to localhost/[0:0:0:0:0:0:0:1]:62611"), true),