exchangeInProgress
True while a statement is being executed on this connection, from the first message sent until the exchange is fully drained.
Set by beginExchange and cleared by endExchange, both under lock, so it is only observed by others while the lock is free - at which point it is always false. What it really catches is reentrant use: code called back into during an exchange (a forEach block, a ResultConverter) trying to run its own statement on the same connection.