[
https://issues.apache.org/jira/browse/HIVE-10242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15379099#comment-15379099
]
Qiuzhuang Lian commented on HIVE-10242:
---------------------------------------
In our production env, we still got this issue with hive-1.2.1. The error stack
thrown from HS2 is as follows,
2016-07-15 04:30:00,028 ERROR [HiveServer2-Background-Pool: Thread-2903721]:
lockmgr.DbTxnManager (DbTxnManager.java:heartbeat(295)) - Unable to find lock
214155
2016-07-15 04:30:00,028 WARN [HiveServer2-Background-Pool: Thread-2903721]:
exec.Heartbeater (Heartbeater.java:heartbeat(83)) - Failed trying to heartbeat
No record of lock could be found, may have timed out
2016-07-15 04:30:00,031 ERROR [HiveServer2-Background-Pool: Thread-2903721]:
exec.Task (SessionState.java:printError(960)) - Ended Job =
job_1466660599841_119253 with exception
'java.io.IOException(org.apache.hadoop.hive.ql.lockmgr.LockException: No record
of lock could be found, may have timed out)'
java.io.IOException: org.apache.hadoop.hive.ql.lockmgr.LockException: No record
of lock could be found, may have timed out
at
org.apache.hadoop.hive.ql.exec.Heartbeater.heartbeat(Heartbeater.java:84)
at
org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper.progress(HadoopJobExecHelper.java:242)
at
org.apache.hadoop.hive.ql.exec.mr.HadoopJobExecHelper.progress(HadoopJobExecHelper.java:549)
at
org.apache.hadoop.hive.ql.exec.mr.ExecDriver.execute(ExecDriver.java:437)
at
org.apache.hadoop.hive.ql.exec.mr.MapRedTask.execute(MapRedTask.java:137)
at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:160)
at
org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:88)
at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1653)
at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1412)
> ACID: insert overwrite prevents create table command
> ----------------------------------------------------
>
> Key: HIVE-10242
> URL: https://issues.apache.org/jira/browse/HIVE-10242
> Project: Hive
> Issue Type: Bug
> Components: Transactions
> Affects Versions: 1.0.0
> Reporter: Eugene Koifman
> Assignee: Eugene Koifman
> Fix For: 1.2.0
>
> Attachments: HIVE-10242.2.patch, HIVE-10242.3.patch,
> HIVE-10242.4.patch, HIVE-10242.patch
>
>
> 1. insert overwirte table DB.T1 select ... from T2: this takes X lock on
> DB.T1 and S lock on T2.
> X lock makes sense because we don't want anyone reading T1 while it's
> overwritten. S lock on T2 prevents if from being dropped while the query is
> in progress.
> 2. create table DB.T3: takes S lock on DB.
> This S lock gets blocked by X lock on T1. S lock prevents the DB from being
> dropped while create table is executed.
> If the insert statement is long running, this blocks DDL ops on the same
> database. This is a usability issue.
> There is no good reason why X lock on a table within a DB and S lock on DB
> should be in conflict.
> (this is different from a situation where X lock is on a partition and S lock
> is on the table to which this partition belongs. Here it makes sense.
> Basically there is no SQL way to address all tables in a DB but you can
> easily refer to all partitions of a table)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)