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

Phabricator updated HIVE-3509:
------------------------------

    Attachment: HIVE-3509.D10065.1.patch

MattMartin requested code review of "HIVE-3509 [jira] Exclusive locks are not 
acquired when using dynamic partitions".

Reviewers: JIRA

Make sure queries involving dynamic partitions acquire exclusive locks on their 
output (instead of shared locks).

This check-in also includes changes to PreExecutePrinter hook to make it easier 
to see (and therefore test) which locks are actually being acquired for each 
query.  Updated the hive-site.xml file used by the test cases to set 
"hive.support.concurrency" to false In order to make sure this change to 
PreExecutePrinter didn't affect unrelated tests (no locks are acquired or 
printed when "hive.support.concurrency" is set to false).

If locking is enabled, the acquireReadWriteLocks() method in 
org.apache.hadoop.hive.ql.Driver iterates through all of the input and output 
entities of the query plan and attempts to acquire the appropriate locks.  In 
general, it should acquire SHARED locks for all of the input entities and 
exclusive locks for all of the output entities (see the Hive wiki page on 
locking for more detailed information).

When the query involves dynamic partitions, the situation is a little more 
subtle.  As the Hive wiki notes (see previous link):

in some cases, the list of objects may not be known - for eg. in case of 
dynamic partitions, the list of partitions being modified is not known at 
compile time - so, the list is generated conservatively. Since the number of 
partitions may not be known, an exclusive lock is taken on the table, or the 
prefix that is known.

After HIVE-1781, the observed behavior is no longer consistent with the 
behavior described above.  HIVE-1781 appears to have altered the logic so that 
SHARED locks are acquired instead of EXCLUSIVE locks whenever the query 
involves dynamic partitions.

TEST PLAN
  EMPTY

REVISION DETAIL
  https://reviews.facebook.net/D10065

AFFECTED FILES
  data/conf/hive-site.xml
  ql/src/java/org/apache/hadoop/hive/ql/Driver.java
  ql/src/java/org/apache/hadoop/hive/ql/hooks/HookContext.java
  ql/src/test/org/apache/hadoop/hive/ql/hooks/PreExecutePrinter.java
  ql/src/test/queries/clientnegative/lockneg1.q
  ql/src/test/queries/clientnegative/lockneg2.q
  ql/src/test/queries/clientnegative/lockneg3.q
  ql/src/test/queries/clientnegative/lockneg4.q
  ql/src/test/queries/clientnegative/lockneg5.q
  ql/src/test/queries/clientpositive/lock1.q
  ql/src/test/queries/clientpositive/lock2.q
  ql/src/test/queries/clientpositive/lock3.q
  ql/src/test/queries/clientpositive/lock4.q
  ql/src/test/results/clientnegative/lockneg1.q.out
  ql/src/test/results/clientnegative/lockneg2.q.out
  ql/src/test/results/clientnegative/lockneg3.q.out
  ql/src/test/results/clientnegative/lockneg4.q.out
  ql/src/test/results/clientnegative/lockneg5.q.out
  ql/src/test/results/clientpositive/lock1.q.out
  ql/src/test/results/clientpositive/lock2.q.out
  ql/src/test/results/clientpositive/lock3.q.out
  ql/src/test/results/clientpositive/lock4.q.out

MANAGE HERALD RULES
  https://reviews.facebook.net/herald/view/differential/

WHY DID I GET THIS EMAIL?
  https://reviews.facebook.net/herald/transcript/24027/

To: JIRA, MattMartin

                
> Exclusive locks are not acquired when using dynamic partitions
> --------------------------------------------------------------
>
>                 Key: HIVE-3509
>                 URL: https://issues.apache.org/jira/browse/HIVE-3509
>             Project: Hive
>          Issue Type: Bug
>          Components: Locking
>    Affects Versions: 0.9.0
>            Reporter: Matt Martin
>            Assignee: Matt Martin
>         Attachments: HIVE-3509.1.patch.txt, HIVE-3509.D10065.1.patch
>
>
> If locking is enabled, the acquireReadWriteLocks() method in 
> org.apache.hadoop.hive.ql.Driver iterates through all of the input and output 
> entities of the query plan and attempts to acquire the appropriate locks.  In 
> general, it should acquire SHARED locks for all of the input entities and 
> exclusive locks for all of the output entities (see the Hive wiki page on 
> [locking|https://cwiki.apache.org/confluence/display/Hive/Locking] for more 
> detailed information).
> When the query involves dynamic partitions, the situation is a little more 
> subtle.  As the Hive wiki notes (see previous link):
> {quote}
> in some cases, the list of objects may not be known - for eg. in case of 
> dynamic partitions, the list of partitions being modified is not known at 
> compile time - so, the list is generated conservatively. Since the number of 
> partitions may not be known, an exclusive lock is taken on the table, or the 
> prefix that is known.
> {quote}
> After [HIVE-1781|https://issues.apache.org/jira/browse/HIVE-1781], the 
> observed behavior is no longer consistent with the behavior described above.  
> [HIVE-1781|https://issues.apache.org/jira/browse/HIVE-1781] appears to have 
> altered the logic so that SHARED locks are acquired instead of EXCLUSIVE 
> locks whenever the query involves dynamic partitions.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to