You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Gopal V (JIRA)" <ji...@apache.org> on 2018/05/01 01:07:00 UTC

[jira] [Created] (HIVE-19369) Locks: Add new lock implementations for always zero-wait readers

Gopal V created HIVE-19369:
------------------------------

             Summary: Locks: Add new lock implementations for always zero-wait readers
                 Key: HIVE-19369
                 URL: https://issues.apache.org/jira/browse/HIVE-19369
             Project: Hive
          Issue Type: Improvement
            Reporter: Gopal V


Hive Locking with Micro-managed and full-ACID tables needs a better locking implementation which allows for no-wait readers always.

EXCL_DROP
EXCL_WRITE
SHARED_WRITE
SHARED_READ

Short write-up

EXCL_DROP is a "drop partition" or "drop table" and waits for all others to exit
EXCL_WRITE excludes all writes and will wait for all existing SHARED_WRITE to exit.
SHARED_WRITE allows all SHARED_WRITES to go through, but will wait for an EXCL_WRITE & EXCL_DROP (waiting so that you can do drop + insert in different threads).

SHARED_READ does not wait for any lock - it fails fast for a pending EXCL_DROP, because even if there is an EXCL_WRITE or SHARED_WRITE pending, there's no semantic reason to wait for them to succeed before going ahead with a SHARED_WRITE.

a select * => SHARED_READ
an insert into => SHARED_WRITE
an insert overwrite or MERGE => EXCL_WRITE
a drop table => EXCL_DROP

TODO:

The fate of the compactor needs to be added to this before it is a complete description.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)