ServerImpl.start() calls NettyServer.start() while holding ServerImpl.lock. NettyServer.start() awaits a submitted runnable in eventloop. However, this pending runnable may never be executed because the eventloop might be executing some other task, , like ServerListenerImpl.transportCreated(), that is trying to acquire ServerImpl.lock causing a deadlock.
This is a deadlock for multiple-port server transport usecase with the same deadlock mechanism as #6601.
ServerImpl.start()callsNettyServer.start()while holdingServerImpl.lock.NettyServer.start()awaits a submitted runnable in eventloop. However, this pending runnable may never be executed because the eventloop might be executing some other task, , likeServerListenerImpl.transportCreated(), that is trying to acquireServerImpl.lockcausing a deadlock.This is a deadlock for multiple-port server transport usecase with the same deadlock mechanism as #6601.