ChiaPing Tsai created PHOENIX-3569:
--------------------------------------

             Summary: Deadlock when updating both of index and global table
                 Key: PHOENIX-3569
                 URL: https://issues.apache.org/jira/browse/PHOENIX-3569
             Project: Phoenix
          Issue Type: Bug
    Affects Versions: 4.9.0, 4.8.2
            Reporter: ChiaPing Tsai


We update the global index in Observer#postBatchMutate, but the hook is called 
before completing the mvcc.
If ParallelWriterIndexCommitter are busy to update the local index, the other 
updates for global index will be blocked and the mvcc of data table won't be 
completed. The deadlock happens since the ParallelWriterIndexCommitter will 
never complete the updates for local index.
We can reproduce the deadlock through the following step.
# create a data table with a local and a global index.
# create 10+ (DEFAULT_CONCURRENT_INDEX_WRITER_THREADS) threads which disable 
the auto commit to submit data
# wait for the deadlock. the rs log will show the following message. "STUCK: 
MultiVersionConcurrencyControl{readPoint=8790, writePoint=8801}"

It seems to me that we should update the both of local and global index on the 
hook of postPut and postDelete.

Any suggestions are welcomed.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to