A test failure (TransportActionFilterChainTests#testTooManyContinueProcessing) revealed a concurrency issue in both rest filter chain and action filter chain. We use a volatile int to keep track of the current position in the chain, which might get incremented from concurrent threads. volatile is not enough if the filters call continueProcessing concurrently.
Also improved filter chain tests to not rely on execution time, and made filter chain tests look more similar to what happens in reality by removing multiple threads creation in testTooManyContinueProcessing (something we don't support anyway, makes little sense to test it).