Discussion:
Are Hive locks really ephemeral ?
rajeshksv
2018-11-12 14:54:13 UTC
Permalink
Hi Hive Users,

I am using Hive 2.3.3.

According to docs (https://cwiki.apache.org/confluence/display/Hive/Locking),
they are ephemeral. But in the Zookeeper and Hive source Code, they seemed
to be non-ephemeral.

I ran the following query in Hive.


*lock table discovery.defaultns*

When I see the lock in zookeeper, it doesn't look like ephemeral node.

[zk: localhost:2181(CONNECTED) 55] get
/hive_zookeeper_namespace/discovery/defaultns/LOCK-EXCLUSIVE-0000000000
hive_20181112191555_d6640955-2806-4fa7-9e52-30d04c377a04:1542030355565:EXPLICIT:lock
table discovery.defaultns exclusive:10.33.222.139
cZxid = 0x2400296808
ctime = Mon Nov 12 19:15:55 IST 2018
mZxid = 0x2400296808
mtime = Mon Nov 12 19:15:55 IST 2018
pZxid = 0x2400296808
cversion = 0
dataVersion = 0
aclVersion = 0
*ephemeralOwner = 0x0*
dataLength = 134
numChildren = 0

Also in the code -
https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveTxnManagerImpl.java,
the lock is KeepAlive/PERSISTENT and not EPHIMERAL .
* HiveLock lck = lockMgr.lock(new HiveLockObject(tbl, lockData), mode,
true);*
Is it a bug or am I missing something? Thanks!
--
Regards,
Rajesh KSV
Peter Vary
2018-11-17 13:37:27 UTC
Permalink
Hi Rajesh,

When the queries are locking tables/partitions they are using the acquireLocks method.
If you are using DummyTxnManager then it acquires locks with keepAlive false.

When using manual locking then that is a different story, and most probably you are right when you say that it creates persistent locks.

Thanks,
Peter
Post by rajeshksv
Hi Hive Users,
I am using Hive 2.3.3.
According to docs (https://cwiki.apache.org/confluence/display/Hive/Locking <https://cwiki.apache.org/confluence/display/Hive/Locking>), they are ephemeral. But in the Zookeeper and Hive source Code, they seemed to be non-ephemeral.
I ran the following query in Hive.
lock table discovery.defaultns
When I see the lock in zookeeper, it doesn't look like ephemeral node.
[zk: localhost:2181(CONNECTED) 55] get /hive_zookeeper_namespace/discovery/defaultns/LOCK-EXCLUSIVE-0000000000
hive_20181112191555_d6640955-2806-4fa7-9e52-30d04c377a04:1542030355565:EXPLICIT:lock table discovery.defaultns exclusive:10.33.222.139
cZxid = 0x2400296808
ctime = Mon Nov 12 19:15:55 IST 2018
mZxid = 0x2400296808
mtime = Mon Nov 12 19:15:55 IST 2018
pZxid = 0x2400296808
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 134
numChildren = 0
Also in the code - https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveTxnManagerImpl.java <https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/HiveTxnManagerImpl.java>, the lock is KeepAlive/PERSISTENT and not EPHIMERAL .
HiveLock lck = lockMgr.lock(new HiveLockObject(tbl, lockData), mode, true);
Is it a bug or am I missing something? Thanks!
--
Regards,
Rajesh KSV
Loading...