Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
we are not handling InterruptedException in the correct way. For example, in HelixStateTransitionHandler, we are catching all Exceptions (including InterruptedException) but never honor the interrupt signal by throwing InterruptedException again or call thread.interrupt(). This prevents any helix task to be cancelled, which in turn prevents executor thread pool to be shut down. This is problematic, for example, in case of zk session expiry, we are canceling leftover tasks but actually they never being cancelled and continue to write to zk in the new session.
We need also be careful about other places where we catch InterruptedException but not honoring it.