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

Furcy Pin commented on HIVE-7483:
---------------------------------

I confirm, we are having the same issue on Hive 1.1.0, and I reproduced it on 
1.2.1

CREATE TABLE test_db.test_table (id INT) 
PARTITIONED BY (part STRING)
STORED AS ORC ;

INSERT INTO TABLE test_db.test_table PARTITION (part="test")
VALUES (1), (2), (3), (4) 
;

SET hive.exec.dynamic.partition.mode=nonstrict ;
SET hive.support.concurrency=true ;

INSERT OVERWRITE TABLE test_db.test_table PARTITION (part)
SELECT * FROM test_db.test_table ;

nothing happens, and when doing a SHOW LOCKS in another shell we get :

+----------+-----------+------------+------------+-------------+--------------+-----------------+-----------------+----------------+
| lockid   | database  | table      | partition  | lock_state  | lock_type    | 
transaction_id  | last_heartbeat  |  acquired_at   |
+----------+-----------+------------+------------+-------------+--------------+-----------------+-----------------+----------------+
| 3765     | test_db   | test_table | NULL       | WAITING     | EXCLUSIVE    | 
NULL            | 1440603633148   | NULL           |
| 3765     | test_db   | test_table | part=test  | WAITING     | SHARED_READ  | 
NULL            | 1440603633148   | NULL           |
+----------+-----------+------------+------------+-------------+--------------+-----------------+-----------------+----------------+

from looking at the source of 
org.apache.hadoop.hive.ql.lockmgr.EmbeddedLockManager, I would say it is stuck
in the for loop of the method lock(List<HiveLockObj> objs, int 
numRetriesForLock, long sleepTime), 
where lockPrimitive() keeps failing on the second lock.







> hive insert overwrite table select from self dead lock
> ------------------------------------------------------
>
>                 Key: HIVE-7483
>                 URL: https://issues.apache.org/jira/browse/HIVE-7483
>             Project: Hive
>          Issue Type: Bug
>          Components: Locking
>    Affects Versions: 0.13.1
>            Reporter: Xiaoyu Wang
>
> CREATE TABLE test(
>   id int, 
>   msg string)
> PARTITIONED BY ( 
>   continent string, 
>   country string)
> CLUSTERED BY (id) 
> INTO 10 BUCKETS
> STORED AS ORC;
> alter table test add partition(continent='Asia',country='India');
> in hive-site.xml:
> hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
> hive.support.concurrency=true;
> in hive shell:
> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
> insert into test table some records first.
> then execute sql:
> insert overwrite table test partition(continent='Asia',country='India') 
> select id,msg from test;
> the log stop at :
> INFO log.PerfLogger: <PERFLOG method=acquireReadWriteLocks 
> from=org.apache.hadoop.hive.ql.Driver>
> i think it has dead lock when insert overwrite table from it self.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to