[
https://issues.apache.org/jira/browse/HBASE-19954?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16357267#comment-16357267
]
Ted Yu commented on HBASE-19954:
--------------------------------
Here is related test output with exception (the first line was added for
debugging):
{code}
2018-02-08 17:22:23,382 DEBUG [RS:0;cn012:38253]
util.ShutdownHookManager$ShutdownHookManagerV2(94): removing hook
org.apache.hadoop.fs.FileSystem$Cache$ClientFinalizer@6a0c707e
2018-02-08 17:22:23,382 DEBUG [M:0;cn012:41573] executor.ExecutorService(92):
Starting executor service name=MASTER_META_SERVER_OPERATIONS-master/cn012:0,
corePoolSize=5, maxPoolSize=5
2018-02-08 17:22:23,382 DEBUG [M:0;cn012:41573] executor.ExecutorService(92):
Starting executor service name=M_LOG_REPLAY_OPS-master/cn012:0,
corePoolSize=10, maxPoolSize=10
2018-02-08 17:22:23,382 DEBUG [M:0;cn012:41573] executor.ExecutorService(92):
Starting executor service name=MASTER_TABLE_OPERATIONS-master/cn012:0,
corePoolSize=1, maxPoolSize=1
2018-02-08 17:22:23,389 ERROR [RS:0;cn012:38253]
helpers.MarkerIgnoringBase(159): ***** ABORTING region server
cn012.l42scl.hortonworks.com,38253,1518110542271: Unhandled: Failed suppression
of fs shutdown hook:
org.apache.hadoop.fs.FileSystem$Cache$ClientFinalizer@6a0c707e *****
java.lang.RuntimeException: Failed suppression of fs shutdown hook:
org.apache.hadoop.fs.FileSystem$Cache$ClientFinalizer@6a0c707e
at
org.apache.hadoop.hbase.regionserver.ShutdownHook.suppressHdfsShutdownHook(ShutdownHook.java:207)
at
org.apache.hadoop.hbase.regionserver.ShutdownHook.install(ShutdownHook.java:85)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:927)
at
org.apache.hadoop.hbase.MiniHBaseCluster$MiniHBaseClusterRegionServer.runRegionServer(MiniHBaseCluster.java:187)
at
org.apache.hadoop.hbase.MiniHBaseCluster$MiniHBaseClusterRegionServer.access$000(MiniHBaseCluster.java:133)
at
org.apache.hadoop.hbase.MiniHBaseCluster$MiniHBaseClusterRegionServer$1.run(MiniHBaseCluster.java:171)
at java.security.AccessController.doPrivileged(Native Method)
{code}
I also added a debug log in
ShutdownHookManager#ShutdownHookManagerV2#addShutdownHook() which didn't show
up in the test output.
Since there was no check that hadoop tracks the ClientFinalizer before calling
#removeShutdownHook, the false return from hadoop resulted in the
RuntimeException to be thrown.
> ShutdownHook should check whether shutdown hook is tracked by
> ShutdownHookManager
> ---------------------------------------------------------------------------------
>
> Key: HBASE-19954
> URL: https://issues.apache.org/jira/browse/HBASE-19954
> Project: HBase
> Issue Type: Bug
> Reporter: Ted Yu
> Assignee: Ted Yu
> Priority: Major
> Attachments: 19954.v1.txt
>
>
> Currently ShutdownHook#suppressHdfsShutdownHook() does the following:
> {code}
> synchronized (fsShutdownHooks) {
> boolean isFSCacheDisabled =
> fs.getConf().getBoolean("fs.hdfs.impl.disable.cache", false);
> if (!isFSCacheDisabled &&
> !fsShutdownHooks.containsKey(hdfsClientFinalizer)
> && !ShutdownHookManager.deleteShutdownHook(hdfsClientFinalizer)) {
> {code}
> There is no check that ShutdownHookManager still tracks the shutdown hook,
> leading to potential RuntimeException (as can be observed in hadoop3 Jenkins
> job).
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)