binlijin created HBASE-16994:
--------------------------------

             Summary: Region report a last flushed sequence id that is less 
than the previous last flushed sequence id 
                 Key: HBASE-16994
                 URL: https://issues.apache.org/jira/browse/HBASE-16994
             Project: HBase
          Issue Type: Bug
            Reporter: binlijin


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.



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

Reply via email to