Исключение `io.netty` при реализации Spring Session с Redis - PullRequest
0 голосов
/ 07 февраля 2020

Я реализую Spring Session с Redis.

Я получаю следующее исключение:

SEVERE [RMI TCP Connection(3)-127.0.0.1]
org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks 
The web application [ROOT] created a ThreadLocal with key of type [java.lang.ThreadLocal] 
(value [java.lang.ThreadLocal@e9d8bb]) and a value of type [io.netty.util.internal.InternalThreadLocalMap] 
(value [io.netty.util.internal.InternalThreadLocalMap@1559b23]) 
but failed to remove it when the web application was stopped. Threads are going to be 
renewed over time to try and avoid a probable memory leak.

У меня есть следующие зависимости:

    <dependency>
        <groupId>io.lettuce</groupId>
        <artifactId>lettuce-core</artifactId>
        <version>5.2.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-data-redis</artifactId>
        <version>2.2.1.RELEASE</version>
    </dependency>

Я могу обратите внимание, что lettuce-core перетаскивает в io.netty классах:

[INFO] +- io.lettuce:lettuce-core:jar:5.2.1.RELEASE:compile
[INFO] |  +- io.netty:netty-common:jar:4.1.43.Final:compile
[INFO] |  +- io.netty:netty-handler:jar:4.1.43.Final:compile
[INFO] |  |  +- io.netty:netty-buffer:jar:4.1.43.Final:compile
[INFO] |  |  \- io.netty:netty-codec:jar:4.1.43.Final:compile
[INFO] |  +- io.netty:netty-transport:jar:4.1.43.Final:compile
[INFO] |  |  \- io.netty:netty-resolver:jar:4.1.43.Final:compile
[INFO] |  \- io.projectreactor:reactor-core:jar:3.3.0.RELEASE:compile
[INFO] |     \- org.reactivestreams:reactive-streams:jar:1.0.3:compile

Исключением io.netty является известный, нефиксированный дефект .

Есть ли способ обойти это? Я уже пробовал следующее:

  • Используемая версия 5.1.8.RELEASE из lettuce-core: То же исключение
  • Используемая версия 5.0.5.RELEASE из lettuce-core: Получить NoSuchMethodError: io.lettuce.core.api.StatefulConnection.closeAsyn c ()

Есть ли решение этой проблемы?

1 Ответ

0 голосов
/ 11 февраля 2020

Комментарии к отчету об ошибках указывают, что это уменьшит проблему, но не решит ее полностью. Возможно, такой подход подойдет для вашего случая использования?

public class MyServletContextListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event) {

    }

    public void contextDestroyed(ServletContextEvent event) {
        io.netty.util.internal.InternalThreadLocalMap.destroy();
    }

}
...