This is one of the causes of unstable integration tests.
When a worker starts, WorkerState boots up a Server, which binds Netty to a port in order to receive messages from other workers. Slightly later, we register a callback with the server that defines where the Server should deliver received messages.
In the interim between binding the port and registering the callbacks, Storm quietly discards any received messages.
Other workers will happily send messages to the worker that is not ready, as the sending side considers an open connection to be sufficient to send messages.
We should change the setup so we set the receive callback before we start the Server.