From 55e27c1167c9e903b1675f0b63aaf2033f575af0 Mon Sep 17 00:00:00 2001 From: galimru Date: Mon, 27 Jan 2020 21:15:04 +0400 Subject: [PATCH 1/2] added the fix to workaround openjdk bug which thrown internal error (ref #629) --- .../telegrambots/updatesreceivers/DefaultBotSession.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java b/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java index 0f9f6334..94e83313 100644 --- a/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java +++ b/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java @@ -274,6 +274,14 @@ public class DefaultBotSession implements BotSession { } catch (InterruptedException e) { log.info(e.getLocalizedMessage(), e); interrupt(); + } catch (InternalError e) { + // handle InternalError to workaround OpenJDK bug (resolved since 13.0) + // https://bugs.openjdk.java.net/browse/JDK-8173620 + Throwable cause = e.getCause(); + if (cause instanceof IOException) { + log.error(e.getLocalizedMessage(), e); + } + throw e; } return Collections.emptyList(); } From 1b18b1ccdb418a7c0ed007c68a16d926d66c254f Mon Sep 17 00:00:00 2001 From: galimru Date: Tue, 28 Jan 2020 12:59:27 +0400 Subject: [PATCH 2/2] unwrap cause from internal exception and prevent from breaking thread (ref #629) --- .../updatesreceivers/DefaultBotSession.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java b/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java index 94e83313..da98f1b8 100644 --- a/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java +++ b/telegrambots/src/main/java/org/telegram/telegrambots/updatesreceivers/DefaultBotSession.java @@ -26,6 +26,7 @@ import org.telegram.telegrambots.meta.generics.UpdatesReader; import java.io.IOException; import java.io.InvalidObjectException; +import java.lang.reflect.InvocationTargetException; import java.net.SocketException; import java.net.SocketTimeoutException; import java.nio.charset.StandardCharsets; @@ -277,12 +278,12 @@ public class DefaultBotSession implements BotSession { } catch (InternalError e) { // handle InternalError to workaround OpenJDK bug (resolved since 13.0) // https://bugs.openjdk.java.net/browse/JDK-8173620 - Throwable cause = e.getCause(); - if (cause instanceof IOException) { - log.error(e.getLocalizedMessage(), e); - } - throw e; + if (e.getCause() instanceof InvocationTargetException) { + Throwable cause = e.getCause().getCause(); + log.error(cause.getLocalizedMessage(), cause); + } else throw e; } + return Collections.emptyList(); } }