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.
