Skip to content

'channelLogger' is already in use when updating from 1.23.x to 1.24.x #6707

@bsideup

Description

@bsideup

What version of gRPC-Java are you using?

1.124.0

What is your environment?

Mac OS X
Java 11

What did you expect to see?

No error

What did you see instead?

java.lang.IllegalArgumentException: 'channelLogger' is already in use
io.netty.channel.ChannelPipelineException: io.grpc.netty.ProtocolNegotiators$WaitUntilActiveHandler.handlerAdded() has thrown an exception; removed.
	at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:624)
	at io.netty.channel.DefaultChannelPipeline.addBefore(DefaultChannelPipeline.java:269)
	at io.netty.channel.DefaultChannelPipeline.addBefore(DefaultChannelPipeline.java:237)
	at io.grpc.netty.WriteBufferingAndExceptionHandler.handlerAdded(WriteBufferingAndExceptionHandler.java:59)
	at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:956)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609)
	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:223)
	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:381)
	at io.netty.channel.DefaultChannelPipeline.addLast(DefaultChannelPipeline.java:370)
	at io.grpc.netty.NettyServerTransport.start(NettyServerTransport.java:147)
	at io.grpc.netty.NettyServer$1.initChannel(NettyServer.java:231)
	at io.netty.channel.ChannelInitializer.initChannel(ChannelInitializer.java:129)
	at io.netty.channel.ChannelInitializer.handlerAdded(ChannelInitializer.java:112)
	at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:956)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609)
	at io.netty.channel.DefaultChannelPipeline.access$100(DefaultChannelPipeline.java:46)
	at io.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute(DefaultChannelPipeline.java:1463)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers(DefaultChannelPipeline.java:1115)
	at io.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded(DefaultChannelPipeline.java:650)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:502)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417)
	at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ExceptionInInitializerError: null
	at io.grpc.netty.ProtocolNegotiators.negotiationLogger(ProtocolNegotiators.java:82)
	at io.grpc.netty.ProtocolNegotiators.negotiationLogger(ProtocolNegotiators.java:78)
	at io.grpc.netty.ProtocolNegotiators$ProtocolNegotiationHandler.handlerAdded(ProtocolNegotiators.java:667)
	at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:956)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609)
	... 28 common frames omitted
Caused by: java.lang.IllegalArgumentException: 'channelLogger' is already in use
	at io.netty.util.ConstantPool.createOrThrow(ConstantPool.java:109)
	at io.netty.util.ConstantPool.newInstance(ConstantPool.java:91)
	at io.netty.util.AttributeKey.newInstance(AttributeKey.java:55)
	at io.grpc.netty.NettyClientTransport.<clinit>(NettyClientTransport.java:70)
	... 33 common frames omitted

Steps to reproduce the bug

  1. Clone https://github.com/bsideup/liiklus
  2. Edit AbstractIntegrationTest in app/src/test/java and set useGrpc to true
  3. Run SmokeTest either by delegating to Gradle in your IDE or with Gradle

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions