netty: Netty producing exception when server is killed

Expected behavior

I have used to following code to handle server shutdown:

public void stop() {
        try {
            this.channelFuture.channel().close();
            this.channelFuture.channel().closeFuture().sync();
        } catch (InterruptedException e) {
            Log.exceptionStack(e);
        } finally {
            this.bootstrap.config().childGroup().shutdownGracefully(10, 30, TimeUnit.SECONDS);
            this.bootstrap.config().group().shutdownGracefully(5, 10, TimeUnit.SECONDS);
        }
    }

It should shutdown without any exceptions

Actual behavior

Sometimes the server shutsdown with the following exception:

Exception in thread "nioEventLoopGroup-3-1" java.lang.NoClassDefFoundError: io/netty/buffer/PoolArena$1
        at io.netty.buffer.PoolArena.freeChunk(PoolArena.java:293)
        at io.netty.buffer.PoolThreadCache$MemoryRegionCache.freeEntry(PoolThreadCache.java:471)
        at io.netty.buffer.PoolThreadCache$MemoryRegionCache.free(PoolThreadCache.java:441)
        at io.netty.buffer.PoolThreadCache$MemoryRegionCache.free(PoolThreadCache.java:433)
        at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:290)
        at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:281)
        at io.netty.buffer.PoolThreadCache.free0(PoolThreadCache.java:254)
        at io.netty.buffer.PoolThreadCache.free(PoolThreadCache.java:250)
        at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.onRemoval(PooledByteBufAllocator.java:431)
        at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.onRemoval(PooledByteBufAllocator.java:408)
        at io.netty.util.concurrent.FastThreadLocal.remove(FastThreadLocal.java:226)
        at io.netty.util.concurrent.FastThreadLocal.removeAll(FastThreadLocal.java:67)
        at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:146)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: io.netty.buffer.PoolArena$1
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 14 more
Exception in thread "Thread-1" java.lang.NoClassDefFoundError: io/netty/channel/AbstractChannelHandlerContext$13
        at io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:610)
        at io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:465)
        at io.netty.channel.DefaultChannelPipeline.close(DefaultChannelPipeline.java:964)
        at io.netty.channel.AbstractChannel.close(AbstractChannel.java:234)
        at co.iotfy.gps.smaartly.TrackerServer.stop(TrackerServer.java:59)
        at co.iotfy.gps.smaartly.ServerManager.stop(ServerManager.java:90)
        at co.iotfy.gps.smaartly.App$1.run(App.java:22)
Caused by: java.lang.ClassNotFoundException: io.netty.channel.AbstractChannelHandlerContext$13
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 7 more


Netty version

4.1.9.Final

JVM version (e.g. java -version)

java version “1.8.0_121” Java™ SE Runtime Environment (build 1.8.0_121-b13) Java HotSpot™ 64-Bit Server VM (build 25.121-b13, mixed mode)

OS version (e.g. uname -a)

4.8.0-44-generic #47~16.04.1-Ubuntu

Let me know if any other information is required.

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Reactions: 2
  • Comments: 20 (12 by maintainers)

Commits related to this issue

Most upvoted comments

@sshntt can you provide a full listing of the Netty jars on your classpath? It sounds as though you may have multiple versions which are not binary compatible. Consider checking out the netty-bom artifact.