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 4bebfc925923..0e2c6156c106 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,9 +26,11 @@ import java.io.Serializable; import java.net.SocketException; import java.net.SocketTimeoutException; +import java.security.cert.CertificateException; import java.util.Collections; import java.util.Objects; import java.util.Set; +import javax.net.ssl.SSLHandshakeException; /** * Base class for all service exceptions. @@ -203,6 +205,8 @@ protected boolean isRetryable(boolean idempotent, Error error) { protected boolean isRetryable(boolean idempotent, IOException exception) { boolean exceptionIsRetryable = exception instanceof SocketTimeoutException || exception instanceof SocketException + || (exception instanceof SSLHandshakeException + && !(exception.getCause() instanceof CertificateException)) || "insufficient data written".equals(exception.getMessage()); return idempotent && exceptionIsRetryable; }