diff --git a/google-cloud-core/src/main/java/com/google/cloud/BaseServiceException.java b/google-cloud-core/src/main/java/com/google/cloud/BaseServiceException.java index e9e9e2aa63..29396d6d58 100644 --- a/google-cloud-core/src/main/java/com/google/cloud/BaseServiceException.java +++ b/google-cloud-core/src/main/java/com/google/cloud/BaseServiceException.java @@ -26,6 +26,7 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.ExecutionException; +import javax.net.ssl.SSLException; import javax.net.ssl.SSLHandshakeException; /** Base class for all service exceptions. */ @@ -256,6 +257,8 @@ public static boolean isRetryable(boolean idempotent, IOException exception) { boolean exceptionIsRetryable = exception instanceof SocketTimeoutException || exception instanceof SocketException + || (exception instanceof SSLException + && exception.getMessage().contains("Connection has been shutdown: ")) || (exception instanceof SSLHandshakeException && !(exception.getCause() instanceof CertificateException)) || "insufficient data written".equals(exception.getMessage())