Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-11145

UNEXPECTED!!! when HLog sync: Queue full

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • None
    • 0.99.1
    • wal
    • None
    • Reviewed

    Description

      Got the below Exceptions Log in case of a write heavy test

      2014-05-07 11:29:56,417 ERROR [main.append-pool1-t1] wal.FSHLog$RingBufferEventHandler(1882): UNEXPECTED!!!
      java.lang.IllegalStateException: Queue full
       at java.util.AbstractQueue.add(Unknown Source)
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$SyncRunner.offer(FSHLog.java:1227)
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1878)
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1)
       at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
      2014-05-07 11:29:56,418 ERROR [main.append-pool1-t1] wal.FSHLog$RingBufferEventHandler(1882): UNEXPECTED!!!
      java.lang.ArrayIndexOutOfBoundsException: 5
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1838)
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1)
       at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
      2014-05-07 11:29:56,419 ERROR [main.append-pool1-t1] wal.FSHLog$RingBufferEventHandler(1882): UNEXPECTED!!!
      java.lang.ArrayIndexOutOfBoundsException: 6
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1838)
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1)
       at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
      2014-05-07 11:29:56,419 ERROR [main.append-pool1-t1] wal.FSHLog$RingBufferEventHandler(1882): UNEXPECTED!!!
      java.lang.ArrayIndexOutOfBoundsException: 7
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1838)
       at org.apache.hadoop.hbase.regionserver.wal.FSHLog$RingBufferEventHandler.onEvent(FSHLog.java:1)
       at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.lang.Thread.run(Unknown Source)
      
       

      In FSHLog$SyncRunner.offer we do BlockingQueue.add() which throws Exception as it is full. The problem is the below shown catch() we do not do any cleanup.

      this.syncRunners[index].offer(sequence, this.syncFutures, this.syncFuturesCount);
              attainSafePoint(sequence);
              this.syncFuturesCount = 0;
            } catch (Throwable t) {
              LOG.error("UNEXPECTED!!!", t);
            }
      

      syncFuturesCount is not getting reset to 0 and so the subsequent onEvent() handling throws ArrayIndexOutOfBoundsException.

      I think we should do the below
      1. Handle the Exception and call cleanupOutstandingSyncsOnException() as in other cases of Exception handling
      2. Instead of BlockingQueue.add() use offer()

      Attachments

        1. HBASE-11462.v3.patch
          36 kB
          Michael Stack
        2. 11145v2.txt
          3 kB
          Michael Stack
        3. 11145.txt
          2 kB
          Michael Stack

        Activity

          People

            stack Michael Stack
            anoop.hbase Anoop Sam John
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: