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

Region report a last flushed sequence id that is less than the previous last flushed sequence id

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • None
    • None
    • None
    • None

    Description

      Since append will be published to RingBuffer and handled asynchronously, it's possible that one append (say append-X) of the region handled by RingBufferEventHandler between startCacheFlush and getNextSequenceId, and reset FSHLog#oldestUnflushedStoreSequenceIds which we just cleared in #startCacheFlush. This might disturb ServerManager#flushedSequenceIdByRegion like shown below (assume region-A has two CF: cfA and cfB)

      1. flush-A runs to startCacheFlush and it will flush both cfA and cfB, oldestUnflushedStoreSequenceIds of regionA got cleared
      2. append-X on cfB handled by RingBufferEventHandler, oldestUnflushedStoreSequenceIds set to 10, for example
      3. flush-A runs to getNextSequenceId and returned 11
      4. ServerManager#flushedSequenceIdByRegion for regionA set to 11
      5. flush-A finishes
      6. flush-B starts and only flush cfA, getNextSequenceId returned 10, and flushedSeqId will return 9, and cause warning in ServerManager

      Since this append-X will also got flushed, we should clear the oldestUnflushedStoreSequenceIds again to make sure we won't disturb
      ServerManager#flushedSequenceIdByRegion.

      Attachments

        1. HBASE-16994_master_v1.patch
          7 kB
          Lijin Bin
        2. HBASE-16994_master_v2.patch
          8 kB
          Lijin Bin

        Issue Links

          Activity

            People

              Unassigned Unassigned
              binlijin Lijin Bin
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: