diff --git a/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java b/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java index d505203c..5c780e52 100644 --- a/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java +++ b/src/main/java/com/treasuredata/client/TDRequestErrorHandler.java @@ -24,6 +24,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -181,6 +182,10 @@ else if (e instanceof SocketException) { // All known SocketException are retryable. return new TDClientSocketException(socketException); } + else if (Objects.equals(socketException.getMessage(), "Socket closed")) { + // okhttp can raise java.net.SocketException("Socket closed") + return new TDClientSocketException(socketException); + } else { // Other unknown SocketException are considered non-retryable. throw new TDClientSocketException(socketException);