Я начал видеть ошибку в производстве, которая является новой для меня. Похоже, что в клиентском драйвере Java Riak произошла ошибка, а затем я получил спам с тысячами ошибок от netty.
Это трассировка стека, которую я вижу:
java.lang.IllegalAccessError: io/netty/channel/AdaptiveRecvByteBufAllocator$HandleImpl/
at io.netty.channel.AdaptiveRecvByteBufAllocator.newHandle(AdaptiveRecvByteBufAllocator.java:180)/
at io.netty.channel.AbstractChannel$AbstractUnsafe.recvBufAllocHandle(AbstractChannel.java:434)/
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:110)/
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:610)/
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:551)/
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:465)/
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:437)/
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873)/
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)/
at java.lang.Thread.run(Thread.java:748)
Чтение базы кода netty, это похоже на создание объекта:
@Override
public Handle newHandle() {
return new HandleImpl(minIndex, maxIndex, initial);
}
Впервые я вижу это в своих журналах сразу после того, как увидел это исключение:
Operation onException() channel: id:306028938 riakts.service.consul:8087 java.lang.IllegalAccessError:
tried to access class io.netty.channel.AbstractChannel$AbstractUnsafe$7 from class io.netty.channel.AbstractChannel$AbstractUnsafe
Я действительно совершенно не понимаю, как это может вызывать ошибку IllegalAccessError. Любое руководство о том, что может быть причиной этого исключения или как с ним справиться? У меня появляется сильное чувство, если я откажусь от своего производственного приложения, оно исчезнет, но в ответ я чувствую себя довольно хакерским, и я надеялся добиться большего успеха.