phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hadoop QA (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PHOENIX-3569) Deadlock when updating both of local and global index
Date Mon, 09 Jan 2017 09:34:58 GMT

    [ https://issues.apache.org/jira/browse/PHOENIX-3569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15811181#comment-15811181
] 

Hadoop QA commented on PHOENIX-3569:
------------------------------------

{color:red}-1 overall{color}.  Here are the results of testing the latest attachment 
  http://issues.apache.org/jira/secure/attachment/12846282/PHOENIX-3569.v0.patch
  against master branch at commit d8f4594989c0b73945aaffec5649a0b62ac59724.
  ATTACHMENT ID: 12846282

    {color:green}+1 @author{color}.  The patch does not contain any @author tags.

    {color:green}+1 tests included{color}.  The patch appears to include 2 new or modified
tests.

    {color:green}+1 javac{color}.  The applied patch does not increase the total number of
javac compiler warnings.

    {color:red}-1 javadoc{color}.  The javadoc tool appears to have generated 43 warning messages.

    {color:green}+1 release audit{color}.  The applied patch does not increase the total number
of release audit warnings.

    {color:red}-1 lineLengths{color}.  The patch introduces the following lines longer than
100:
    +    // optimization check to ensure that postPut/postDelete don't get replayed to the
index more than once
+      conn.createStatement().execute("CREATE TABLE " + tableName + " (V0 INTEGER not null
primary key, V1 INTEGER, V2 INTEGER)");
+      conn.createStatement().execute("CREATE LOCAL INDEX " + tableName + "_LOCAL_INDEX "
+ "  ON " + tableName + "(V2)");
+      conn.createStatement().execute("CREATE INDEX " + tableName + "_GLOBAL_INDEX " + " 
 ON " + tableName + " (V1)");
+      conn.createStatement().execute("CREATE TABLE " + tableName + " (V0 INTEGER not null
primary key, V1 INTEGER, V2 INTEGER)");
+      conn.createStatement().execute("CREATE LOCAL INDEX " + tableName + "_LOCAL_INDEX "
+ "  ON " + tableName + "(V2)");
+      conn.createStatement().execute("CREATE INDEX " + tableName + "_GLOBAL_INDEX " + " 
 ON " + tableName + " (V1)");
+      PreparedStatement stat = conn.prepareStatement("UPSERT INTO  " + tableName + "  VALUES
(?, ?, ?)");

     {color:red}-1 core tests{color}.  The patch failed these unit tests:
                       org.apache.phoenix.hbase.index.IndexerHookTest

Test results: https://builds.apache.org/job/PreCommit-PHOENIX-Build/720//testReport/
Javadoc warnings: https://builds.apache.org/job/PreCommit-PHOENIX-Build/720//artifact/patchprocess/patchJavadocWarnings.txt
Console output: https://builds.apache.org/job/PreCommit-PHOENIX-Build/720//console

This message is automatically generated.

> Deadlock when updating both of local and global index
> -----------------------------------------------------
>
>                 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
>            Priority: Critical
>         Attachments: PHOENIX-3569.v0.patch
>
>
> 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)

Mime
View raw message