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

zhangduo commented on HBASE-13242:
----------------------------------

https://builds.apache.org/job/PreCommit-HBASE-Build/13240/artifact/hbase-server/target/surefire-reports/org.apache.hadoop.hbase.regionserver.TestPerColumnFamilyFlush-output.txt
(125.64 MB, Do NOT open it directly in browser)

The testcase hangs after print this
{noformat}
2015-03-14 02:22:49,779 INFO  [Thread-748] 
regionserver.TestPerColumnFamilyFlush(481): The number of log files is now: 11. 
Expect a log roll and memstore flush.
{noformat}
The code is here, we are waiting the number of log files fall below the max 
logs limit.
{code:title=TestPerColumnFamilyFlush.java}
      // Wait for some time till the flush caused by log rolling happens.
      while (((FSHLog) (desiredRegion.getWAL())).getNumLogFiles() > maxLogs) 
Threads.sleep(100);
{code}

Here we use 'getNumLogFiles', but in findRegionsToForceFlush we use 
'getNumRolledLogFiles', see the implementation of 'getNumLogFiles'
{code:title=FSHLog.java}
  // public only until class moves to o.a.h.h.wal
  /** @return the number of log files in use */
  public int getNumLogFiles() {
    // +1 for current use log
    return getNumRolledLogFiles() + 1;
  }
{code}
So it is possible that we enter an infinite loop here because of the '+1'...

Will prepare a patch soon...

> TestPerColumnFamilyFlush.testFlushingWhenLogRolling hung
> --------------------------------------------------------
>
>                 Key: HBASE-13242
>                 URL: https://issues.apache.org/jira/browse/HBASE-13242
>             Project: HBase
>          Issue Type: Bug
>          Components: test
>    Affects Versions: 2.0.0, 1.1.0
>            Reporter: zhangduo
>            Assignee: zhangduo
>




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

Reply via email to