[
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)