Open Source Community
Zettaset is a contributor to various Open Source Groups (Hadoop, Hbase).
Contributions to the Open Source Community to date include the following:
HBase 2584.patch – Add Support for tryLock in HTable
https://issues.apache.org/jira/browse/HBASE-2584
Currently HBase Clients can only acquire row locks via the blocking lockRow() method in HTable. As ryan described on the mailing list, relying on this method in rare highly contended situations can lead to (temporary) deadlock. This deadlock occurs if a client acquires the lock, and a large number of other clients attempt to acquire the lock and block. Each blocked client awaiting lock acquisition consumes one of the limited I/O handler threads on the region server. When lock holder wishes to release the lock, it will be unable to as all I/O threads are currently serving clients that are blocking on lock acquisition and thus no I/O threads are open to process the unlock request.
To avoid deadlock situations such as the one described above, we have added support for ‘tryLock’ in HTable (and on the region servers). The ‘tryLock’ method will attempt to acquire a rowlock. In the event that a lock is already held, tryLock immediately returns null rather than blocking and waiting for the lock to be acquired. Clients can then implement their own backoff / retry policy to reacquire the lock, determine their own timeout values, etc. based on the their application performance characteristics rather than block on the region server and tie up precious I/O region server handler threads for an indefinite amount of time.
HBase 2579-v2.patch
https://issues.apache.org/jira/browse/HBASE-2579
- Currently HBase has support for atomic CheckandPut Operations on individual rows. This patch allows support for atomic CheckAndDelete.
- The TestHRegion has been updated to provide tests for CheckAndDelete in addition to its existing tests for CheckAndPut.