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

Mike Drob commented on HBASE-21342:
-----------------------------------

Thanks for the quick turnaround!

We have SecureBulkLoadManager and TestSecureBulkloadManager, capitalization 
should be consistent.

{code}
    final AtomicReference<Throwable> t1Exception = new AtomicReference();
    final AtomicReference<Throwable> t2Exception = new AtomicReference();
{code}
This needs generics, my fault for pointing you at an example that didn't 
include them.

{code}
    Assert.assertEquals(null, t1Exception.get());
    Assert.assertEquals(null, t2Exception.get());
{code}
Could be {{assertNull}}.

{code}
    try {
      h.doBulkLoad(dir, testUtil.getAdmin(), connection.getTable(TABLE),
          connection.getRegionLocator(TABLE));
    } catch (MyExceptionToAvoidRetry e) {
    }
{code}
Please add a descriptive {{Assert.fail}} to the try block and a comment 
{{//expected}} to the catch.

> FileSystem in use may get closed by other bulk load call  in secure bulkLoad
> ----------------------------------------------------------------------------
>
>                 Key: HBASE-21342
>                 URL: https://issues.apache.org/jira/browse/HBASE-21342
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 3.0.0, 2.1.0, 1.5.0, 1.3.3, 1.4.4, 2.0.1, 1.2.7
>            Reporter: mazhenlin
>            Assignee: mazhenlin
>            Priority: Major
>         Attachments: 21342.v1.txt, HBASE-21342.002.patch, 
> HBASE-21342.003.patch, HBASE-21342.004.patch, HBASE-21342.005.patch, 
> HBASE-21342.006.patch, race.patch
>
>
> As mentioned in [HBASE-15291|#HBASE-15291], there is a race condition.   If 
> Two secure bulkload calls  from the same UGI into two different regions and 
> one region finishes earlier, it will close the bulk load fs, and the other 
> region will fail.
>  
> Another case would be more serious. The FileSystem.close() function needs two 
> synchronized variables : CACHE and deleteOnExit. If one region calls 
> FileSystem.closeAllForUGI ( in SecureBulkLoadManager.cleanupBulkLoad) while 
> another region is trying to close srcFS ( in  
> SecureBulkLoadListener.closeSrcFs)   , can cause deadlock here.
>  
> I have wrote a UT for this and fixed it using reference counter.
>  



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

Reply via email to