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

Benedict commented on CASSANDRA-8832:
-------------------------------------

bq. AFAICS the actual fix for the problem was committed as part of 7705 and 
this patch only adds continued processing after exceptions. Can you confirm 
this?

Regrettably, no. This was broken _by_ 7705 unfortunately. I've included a 
regression that demonstrates the problem. In the event that 
currentlyOpenedEarly != null, and we abort, we do not close (or unmark 
compacting) the early opened file.

bq. replaceWithFinishedReaders can also throw (e.g. due to a reference counting 
bug), hiding any earlier errors. It should also be wrapped in a try/merge block.

I wasn't too sure about this when I wrote it, since it both shouldn't fail in 
the same way (has to be programmer error rather than other problems), and it 
itself leaves the program in a problematic state if it doesn't complete 
successfully. A lot of code paths need reworking to be resilient to this, and I 
didn't want to scope creep. However since you raise it, I've opted to fix this 
latter problem and also wrap it in its own try/catch as you suggest.

bq. The static merge of throwables will probably be needed in many other 
places. Could we move it to a more generic location?

Again, I was torn on writing it since I can't think of a good place to group 
it. I've created our own Throwables utility class, which contains only this for 
now. If you have a better idea for where to put it, pipe up.



> SSTableRewriter.abort() should be more robust to failure
> --------------------------------------------------------
>
>                 Key: CASSANDRA-8832
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8832
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Benedict
>            Assignee: Benedict
>             Fix For: 2.1.4
>
>
> This fixes a bug introduced in CASSANDRA-8124 that attempts to open early 
> during abort, introducing a failure risk. This patch further preempts 
> CASSANDRA-8690 to wrap every rollback action in a try/catch block, so that 
> any internal assertion checks do not actually worsen the state.



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

Reply via email to