Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
None
-
None
-
Reviewed
Description
The Balancer's AccessKeyUpdater handles exceptions badly. In particular:
1. Catching Exception too low. The wrapper around setKeys should only catch IOException.
2. InterruptedException is ignored. It should be caught at the top level and exit run.
3. Throwable is not caught. It should be caught at the top level and kill the Balancer server process.
class AccessKeyUpdater implements Runnable { public void run() { while (shouldRun) { try { accessTokenHandler.setKeys(namenode.getAccessKeys()); } catch (Exception e) { LOG.error(StringUtils.stringifyException(e)); } try { Thread.sleep(keyUpdaterInterval); } catch (InterruptedException ie) { } } } }