Why do I see CWSJY0003W warning messages, even though I just have one activation spec on server level?

I have specified a MQ Activation Specificiation on Appliction Server scope and I see somethings warning messages like:

[9/4/18 6:41:43:939 CEST] 0000fe80 SibMessage W [:] CWSJY0003W: JMSCC0108: An attempt to get a message for delivery to an message listener was made, but the message was not there.

It seems that the problem can happen when another server or Activation Specification picks up the message. But that is not the case in my scenario. I really just have one server with one Activation Specification listening to one queue. So why do I see this warning?

10:00:00.00 ActSpec browses the queue, and finds a message. The ActSpec then must wait for a ServerSession to become free, which requires an existing MDB instance to complete.

10:00:30.00 Another MDB instance completes, freeing up the ServerSession which is returned to the pool.

10:00:30.05 The browsing thread picks up the ServerSession, and loads it up with the information for the ServerSession to be able to consume the browsed message.

10:00:30.10 The browsing thread passes the ServerSession to WAS, to run on another thread, to consume and then drive the MDB.

10:00:30.15 The browsing thread now goes back to MQ, and makes a new request to browse an availble message.

10:00:30.30 The queue manager finds a single message on the queue, which is the same as the one which was previously browsed, but has not yet been consumed. This message is passed back to the browsing thread, which then sits and waits for another ServerSession to become free in the pool.

10:00:30.45 The first ServerSession starts, and destructively consumes the message from the queue, and calls the MDB, passing the message through.

10:00:35.00 Another MDB completes, returning a second ServerSession to the pool. This is then picked up by the browsing thread, which is loaded up with the browsed message (the same one which was just consumed by the previous ServerSession), and then the ServerSession is passed back to WAS to start on another thread.

10:00:35.30 The second ServerSession starts, and attempts to consume the message from the queue. It is not present, so instead of driving the MDB, the ActSpec outputs the JMSCC0108 message, which as we now know, causes the transaction to be rolled back in WAS 9.0, which triggers the endpoint to pause.

In summary:

Even with a single ActSpec, if the MDBs are taking a long time to complete you can run into the same problem as if you had multiple ActSpec instances running in the environment.

It comes down to a race condition between how quickly WAS can start a new thread to run the MDB, and then consume the message from the queue, versus how quickly the browsing thread requests another message from the queue.

Which means, also if you just have one Activation Specification defined, you can see this warnings.

Any inputs on how this would behave in a multi node environment? Our QA server has two nodes. Whenever we get this warning in our logs, our AIS service is not giving us back any response and is timing out after some time.