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