Wouldn't it make more sense for the api to acquire required locks 
automatically?   That seems like a simpler user model.

From: Alan Gates <[email protected]<mailto:[email protected]>>
Reply-To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Date: Tuesday, October 27, 2015 at 11:34 AM
To: "[email protected]<mailto:[email protected]>" 
<[email protected]<mailto:[email protected]>>
Subject: Re: Locking when using the Metastore/HCatalog APIs.

Answers inlined.

[cid:[email protected]]
Elliot West<mailto:[email protected]>
October 22, 2015 at 6:40
I notice from the Hive locking wiki 
page<https://cwiki.apache.org/confluence/display/Hive/Locking> that locks may 
be acquired for a range of HQL DDL operations. I wanted to know how the locking 
scheme mapped mapped/employed by equivalent operations in the Metastore and 
HCatalog APIs. Consider the operation:

alter table T1 drop partition P1

This apparently requires a shared lock on T1 and an exclusive lock on P1. 
However, when following the invocation chain on the equivalent APIs I can see 
no acquisition of such locks:

HCatClient.dropPartitions(...)
IMetaStoreClient.dropPartition(...)

I notice that IMetaStoreClient exposes methods to lock and unlock resources and 
I have used these when working with the ACID APIs. However I can find nothing 
similar on the HCatalog API. As a user of these APIs:

  1.  Do I need to acquire/release locks as declared on the wiki page when 
using equivalent operations in these APIs?

Yes.

  1.  If not, why not?
  2.  Ideally, should the HCatClient also expose lock/unlock methods like the 
Metastore API?

Yes.

  1.  If not, why not?

Thank you - Elliot.
Alan.

Reply via email to