[
https://issues.apache.org/jira/browse/HBASE-7377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13535334#comment-13535334
]
Hadoop QA commented on HBASE-7377:
----------------------------------
{color:red}-1 overall{color}. Here are the results of testing the latest
attachment
http://issues.apache.org/jira/secure/attachment/12561555/HBASE-7377-trunk.patch
against trunk revision .
{color:green}+1 @author{color}. The patch does not contain any @author
tags.
{color:green}+1 tests included{color}. The patch appears to include 3 new
or modified tests.
{color:green}+1 hadoop2.0{color}. The patch compiles against the hadoop
2.0 profile.
{color:green}+1 javadoc{color}. The javadoc tool did not generate any
warning messages.
{color:green}+1 javac{color}. The applied patch does not increase the
total number of javac compiler warnings.
{color:red}-1 findbugs{color}. The patch appears to introduce 28 new
Findbugs (version 1.3.9) warnings.
{color:green}+1 release audit{color}. The applied patch does not increase
the total number of release audit warnings.
{color:red}-1 core tests{color}. The patch failed these unit tests:
org.apache.hadoop.hbase.client.TestMultiParallel
org.apache.hadoop.hbase.catalog.TestMetaReaderEditor
{color:red}-1 core zombie tests{color}. There are zombie tests. See build
logs for details.
Test results:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//testReport/
Findbugs warnings:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
Findbugs warnings:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html
Findbugs warnings:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
Findbugs warnings:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
Findbugs warnings:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
Findbugs warnings:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
Findbugs warnings:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
Console output:
https://builds.apache.org/job/PreCommit-HBASE-Build/3594//console
This message is automatically generated.
> Clean up TestHBase7051
> ----------------------
>
> Key: HBASE-7377
> URL: https://issues.apache.org/jira/browse/HBASE-7377
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 0.94.3, 0.96.0
> Reporter: Gregory Chanan
> Assignee: Gregory Chanan
> Priority: Minor
> Fix For: 0.96.0, 0.94.4
>
> Attachments: HBASE-7377-94.patch, HBASE-7377-trunk.patch
>
>
> TestHBase7051 tests a race condition between checkAndPuts and puts, but is
> hard to follow and verify correctness on for a few reasons:
> - there are no comments and the steps of the test are numbers
> - there are variables that are read/written on different threads with no
> synchronization/volatile (e.g. checkAndPutCompleted). This may be okay
> depending on the other synchronization, but hard to verify.
> - the worker threads are not checked for exceptions. This may also be okay
> if it is not possible for the test to succeed if exceptions are thrown, but
> hard to verify.
> - The test seems to work, but I'm not sure if it's for the reasons expected.
> HBASE-7051 is recreated if the following steps occur:
> 1) Put releases row lock (where we are now)
> 2) CheckAndPut grabs row lock and reads the value prior to the put (10)
> because the MVCC has not advanced
> 3) Put advances MVCC
> On Step 1 the test does the following:
> {code}
> latch.await();
> {code}
> which waits for the checkAndPut to grab the row lock:
> {code}
> latch.countDown();
> return super.getLock(lockid, row, waitForLock);
> {code}
> But now we haven't really done anything to guarantee the race we want: the
> put will try to advance the MVCC and the checkAndPut will try to read and
> either could win, when we really want the checkAndPut read to win.
> Luckily, the put actually waits before advancing its MVCC, but only because
> it happens to fall through to the next case in the if:
> {code}
> if (count == 2) {
> try {
> putCompleted = true;
> super.releaseRowLock(lockId);
> latch.await();
> } catch (InterruptedException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
> if (count == 3) {
> super.releaseRowLock(lockId);
> try {
> Thread.sleep(1000);
> } catch (InterruptedException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> latch.countDown();
> }
> {code}
> which happens to sleep. I doubt this is intentional. Also, there are
> multiple latch.countDown calls even though the latch is initialized to 1.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira