I am trying to build a SIMPLE test case to send to IBM to try to resolve this issue
I thought it would be simple to gin up a JUnit Test case or a little main app that made the calls and show that the MQ call never returned. I thought I'd use the Executor service, wrap my MQ call in a Callable and submit it to the executor service using Future.get() with timeout interval specified.
To be sure, the call times out, but the application won't die. If I use Assert.fail() or when the timeout exception is caught, it doesn't happen, although the stack trace of the timeout exception does print. I can only kill the program externally or by calling System.exit(). I'd rather not do either. Is there some way to kill the thread within the framework of the java.util.concurrent package?
This issue offers a solution but with the caveat
As long as you don't make uninterruptable blocking calls in your task
But that's exactly what I'm doing. Is there ANY way to kill a program that DOES call uninterruptable I/O from within?