[ 
https://issues.apache.org/jira/browse/HBASE-17487?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ted Yu updated HBASE-17487:
---------------------------
    Description: 
In CompactingMemStore#pushPipelineToSnapshot() , there is limit of 3 iterations 
of pipeline.swap() call after which an empty ImmutableSegment is used as 
snapshot.

However, there should be at most two iterations in pushPipelineToSnapshot() 
since during the second iteration there is no concurrent write to memstore.
We should throw exception in the 3rd iteration to signify that this scenario 
should never happen.

  was:
In CompactingMemStore#pushPipelineToSnapshot() , there is limit of 3 iterations 
of pipeline.swap() call after which an empty ImmutableSegment is used as 
snapshot.

However, after 3rd iteration, the return value from swap() is not checked.
If the 3rd swap() call is successful, the versioned list would be swapped with 
null in pipeline and snapshot being overwritten with the empty ImmutableSegment.


> Throw exception when pushing pipeline to snapshot fails twice
> -------------------------------------------------------------
>
>                 Key: HBASE-17487
>                 URL: https://issues.apache.org/jira/browse/HBASE-17487
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Ted Yu
>            Assignee: Ted Yu
>            Priority: Minor
>         Attachments: 17487.v1.txt, 17487.v2.txt
>
>
> In CompactingMemStore#pushPipelineToSnapshot() , there is limit of 3 
> iterations of pipeline.swap() call after which an empty ImmutableSegment is 
> used as snapshot.
> However, there should be at most two iterations in pushPipelineToSnapshot() 
> since during the second iteration there is no concurrent write to memstore.
> We should throw exception in the 3rd iteration to signify that this scenario 
> should never happen.



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

Reply via email to