[ 
https://issues.apache.org/jira/browse/HBASE-17487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15831503#comment-15831503
 ] 

Anastasia Braginsky commented on HBASE-17487:
---------------------------------------------

[~anoop.hbase], you are saying:

bq. Ya if we dont expect the loop to run more than 2 times, lets fail the op. I 
feel its ok..

This is exactly what is currently happens in the code. The snapshot() 
invocation just fails with no side-effect. 


[~ted_yu],

bq. How about throwing exception (e.g. IllegalStateException) in the if block 
when, in the remote possibility, the 3rd iteration happens. 

I do not think this is necessary, the call for snapshot() currently doesn't 
expect an exception to happen and to add this is a change in lots of places. I 
agree that we can change the log to error instead of warning. Alternatively, if 
you plan to catch the exception inside the snapshot() method so what is the 
point of throwing it? How do you plan to manage the exception?

> 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: Improvement
>            Reporter: Ted Yu
>            Assignee: Ted Yu
>            Priority: Minor
>         Attachments: 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