You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "J.P Feng (JIRA)" <ji...@apache.org> on 2017/12/19 13:23:00 UTC

[jira] [Comment Edited] (HIVE-18303) ZooKeeperHiveLockManager should close after lock release in releaseLocksAndCommitOrRollback

    [ https://issues.apache.org/jira/browse/HIVE-18303?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16296568#comment-16296568 ] 

J.P Feng edited comment on HIVE-18303 at 12/19/17 1:22 PM:
-----------------------------------------------------------

even after the hook is finished, this error still appears, and ctrl+c will not effect:

2017-12-19T20:38:30,485 ERROR [Thread-7] ZooKeeperHiveLockManager: Failed to release ZooKeeper lock: 
java.lang.IllegalStateException: instance must be started before calling this method
        at com.google.common.base.Preconditions.checkState(Preconditions.java:149)
        at org.apache.curator.framework.imps.CuratorFrameworkImpl.delete(CuratorFrameworkImpl.java:344)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.unlockPrimitive(ZooKeeperHiveLockManager.java:496)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.unlockWithRetry(ZooKeeperHiveLockManager.java:474)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.unlock(ZooKeeperHiveLockManager.java:462)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.releaseLocks(ZooKeeperHiveLockManager.java:224)
        at org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager.releaseLocks(DummyTxnManager.java:188)
        at org.apache.hadoop.hive.ql.Driver.releaseLocksAndCommitOrRollback(Driver.java:1138)
        at org.apache.hadoop.hive.ql.Driver.access$000(Driver.java:126)
        at org.apache.hadoop.hive.ql.Driver$2.run(Driver.java:425)
        at org.apache.hive.common.util.ShutdownHookManager$1.run(ShutdownHookManager.java:63)


was (Author: snodawn):
even after the hook is finished, this error still appears, and ctrl+c will not effect:

2017-12-19T17:52:07,874 ERROR [main] ZooKeeperHiveLockManager: Failed to release ZooKeeper lock: 
java.lang.IllegalStateException: instance must be started before calling this method
        at com.google.common.base.Preconditions.checkState(Preconditions.java:149)
        at org.apache.curator.framework.imps.CuratorFrameworkImpl.delete(CuratorFrameworkImpl.java:344)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.unlockPrimitive(ZooKeeperHiveLockManager.java:496)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.unlockWithRetry(ZooKeeperHiveLockManager.java:474)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.unlock(ZooKeeperHiveLockManager.java:462)
        at org.apache.hadoop.hive.ql.lockmgr.zookeeper.ZooKeeperHiveLockManager.releaseLocks(ZooKeeperHiveLockManager.java:224)
        at org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager.releaseLocks(DummyTxnManager.java:188)
        at org.apache.hadoop.hive.ql.Driver.releaseLocksAndCommitOrRollback(Driver.java:1138)
        at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1466)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1174)
        at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1163)
        at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232)
        at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183)
        at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

> ZooKeeperHiveLockManager should close after lock release in releaseLocksAndCommitOrRollback
> -------------------------------------------------------------------------------------------
>
>                 Key: HIVE-18303
>                 URL: https://issues.apache.org/jira/browse/HIVE-18303
>             Project: Hive
>          Issue Type: Bug
>          Components: Hive
>    Affects Versions: 2.1.1, 2.2.0
>         Environment: jdk 1.7, centos
>            Reporter: J.P Feng
>
> i found exception :
> ZooKeeperHiveLockManager: Failed to release ZooKeeper lock: 
> java.lang.IllegalStateException: instance must be started before calling this method
> because in ShutdownHookManager, priority of CuratorFrameworkSingleton.closeAndReleaseInstance is 10, but in Driver.releaseLocksAndCommitOrRollback, it's 0. So locks are released after CuratorFramework is closed, which may case such exception.
> This is my operation:
> I add hook of ExecuteWithHookContext or PreExecute, which simply sleep like:
>     @Override
>     public void run(HookContext hookContext) throws Exception {
>         int max_i = 6;
>         try {
>             for ( int i = 0; i < max_i ; i ++) {
>                 LOG.info("try to sleep, for i is => " + i);
>                 Thread.sleep(5000);
>             }
>         } catch (Exception e) {
>             LOG.error(e.getMessage(), e);
>         }
>     }
> and run sql for example, 
> select count(1) from hive_test.time_test;
> Then enter ctrl+c twice to kill hive client. Hive client will not exit, and the above error is thrown.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)