From cfc464b8c87ad94c5a36591748579ec54368c2d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E9=93=81?= Date: Wed, 20 Apr 2016 15:18:06 +0800 Subject: [PATCH] discard mysql streaming resultSet close error connection --- .../druid/pool/vendor/MySqlExceptionSorter.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/vendor/MySqlExceptionSorter.java b/src/main/java/com/alibaba/druid/pool/vendor/MySqlExceptionSorter.java index 076bac37da..31577607bb 100644 --- a/src/main/java/com/alibaba/druid/pool/vendor/MySqlExceptionSorter.java +++ b/src/main/java/com/alibaba/druid/pool/vendor/MySqlExceptionSorter.java @@ -68,6 +68,11 @@ public class MySqlExceptionSorter implements ExceptionSorter { String message = e.getMessage(); if (message != null && message.length() > 0) { + if (message.startsWith("Streaming result set com.mysql.jdbc.RowDataDynamic") + && message.endsWith("is still active. No statements may be issued when any streaming result sets are open and in use on a given connection. Ensure that you have called .close() on any active streaming result sets before attempting more queries.")) { + return true; + } + final String errorText = message.toUpperCase(); if ((errorCode == 0 && (errorText.contains("COMMUNICATIONS LINK FAILURE")) // @@ -78,15 +83,6 @@ public class MySqlExceptionSorter implements ExceptionSorter { } } - StackTraceElement[] stackTrace = e.getStackTrace(); - for (int i = 0; i < stackTrace.length; ++i) { - StackTraceElement element = stackTrace[i]; - if ("com.mysql.jdbc.RowDataDynamic".equals(element.getClassName()) // - && "close".equals(element.getMethodName()) - ) { - return true; - } - } return false; }