When a java.lang.Exception is thrown in a thrift server method, client connections get closed properly. Please see the clean up code below.
But if a java.lang.Error is thrown, that block of clean up code won't be executed and thus client connections may block indefinitely. I think the clean up code should be move to a finally block.
A pull request has been sent to Github: