[ 
https://issues.apache.org/jira/browse/HIVE-23724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aditya Shah updated HIVE-23724:
-------------------------------
    Attachment: HIVE-23724.1.branch-3.1.patch
        Status: Patch Available  (was: Open)

[~pvary] [~dkuzmenko] can you please check it once. Will add relevant unit test 
if my theory is correct.

Thanks!

> Hive ACID Lock conflicts not getting resolved correctly.
> --------------------------------------------------------
>
>                 Key: HIVE-23724
>                 URL: https://issues.apache.org/jira/browse/HIVE-23724
>             Project: Hive
>          Issue Type: Bug
>          Components: Transactions
>    Affects Versions: 3.1.2
>            Reporter: Aditya Shah
>            Assignee: Aditya Shah
>            Priority: Major
>         Attachments: HIVE-23724.1.branch-3.1.patch
>
>
> Steps to reproduce:
> 1. `Drop database temp cascade`
> 2. Parallelly (after 1. but while 1. is running) fire a `create table 
> temp.temp_table (a int, b int) clustered by (a) into 2 buckets stored as orc 
> TBLPROPERTIES ('transactional'='true')`
> 3. Parallelly (after 2. but while 2. is running) fire a `insert overwrite 
> table temp.temp_table values (1,2)`
> note: The above could be easily reproduced by a unit test in testDbTxnManager.
> Observation: Exclusive lock for Table in 3. is granted although exclusive 
> lock for DB acquired in 1. is still acquired and shared read lock on DB for 
> 2. is waiting.
> Cause of issue: while acquiring a lock if we choose to ignore a conflict 
> between the desired lock and one of the existing locks we immediately allow 
> the desired lock to be acquired without checking against all the existing 
> locks. The above-mentioned scenario was one such ignore conflict condition in 
> 2. and 3. There could be other possible combinations where this may occur. 
> Like for example when we request a lock with the same txn ids. Although hive 
> guarantees that this scenario will not occur due to all lock requests related 
> to a txn are asked at the same and failure of one guarantees failure of all, 
> we in future will have to be extra careful with it.
> Resolution: Whenever we ignore conflict we should keep looking against all 
> the existing locks and only then allow the lock to be acquired.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to