[
https://issues.apache.org/jira/browse/HIVE-21893?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sankar Hariappan reassigned HIVE-21893:
---------------------------------------
Assignee: Aasha Medhi (was: Sankar Hariappan)
> Handle concurrent write + drop when ACID tables are getting bootstrapped.
> -------------------------------------------------------------------------
>
> Key: HIVE-21893
> URL: https://issues.apache.org/jira/browse/HIVE-21893
> Project: Hive
> Issue Type: Bug
> Components: repl
> Affects Versions: 4.0.0
> Reporter: Sankar Hariappan
> Assignee: Aasha Medhi
> Priority: Major
> Labels: DR, Replication
>
> ACID tables will be bootstrapped during incremental phase in couple of cases.
> 1. hive.repl.bootstrap.acid.tables is set to true in WITH clause of REPL DUMP.
> 2. If replication policy is changed using REPLACE clause in REPL DUMP where
> the ACID table is matching new policy but not old policy.
> REPL DUMP performed below sequence of operations. Let's say Thread (T1)
> 1. Get Last Repl ID (lastId)
> 2. Open Transaction (Tx1)
> 3. Dump events until lastId.
> 4. Get the list of tables in the given DB.
> 5. If table matches current policy, then bootstrap dump it.
> Let's say, concurrently another thread (let's say T2) is running as follows.
> 11. Open Transaction (Tx2).
> 12. Insert into ACID table Tbl1.
> 13. Commit Transaction (Tx2)
> 14. Drop table (Tbl1) --> Not necessarily same thread, may be from different
> thread as well.
> *Problematic Use-cases:*
> 1. If Step-11 happens between Step-1 and Step-2. Also, Step-13 completes
> before we forcefully abort Tx2 from REPL DUMP thread T1. Also, assume Step-14
> is done after bootstrap is completed. In this case, bootstrap would replicate
> the data/writeId written by Tx2. But, the next incremental cycle would also
> replicate the open_txn, allocate_writeid and commit_txn events which would
> duplicate the data.
> 2. If Step-11 to Step-14 in Thread T2 happens after Step-1 in REPL DUMP
> thread T1. In this case, table is not bootstrapped but the corresponding
> open_txn, allocate_writeid, commit_txn and drop events would be replicated in
> next cycle. During next cycle, REPL LOAD would fail on commmitTxn event as
> table is dropped or event is missing.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)