You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Robert Stupp (JIRA)" <ji...@apache.org> on 2015/10/09 14:21:27 UTC
[jira] [Comment Edited] (CASSANDRA-10377) AssertionError: attempted
to delete non-existing file CommitLog
[ https://issues.apache.org/jira/browse/CASSANDRA-10377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14950300#comment-14950300 ]
Robert Stupp edited comment on CASSANDRA-10377 at 10/9/15 12:21 PM:
--------------------------------------------------------------------
Your analysis WRT race condition seems to be correct. EDIT: Appreciate your effort to analyze this!
I dug a bit deeper into the whole CL thing. Just an idea (not necessarily correct): Maybe it's worth to make {{CLS.discard()}} synchronized and check inside CLS whether the file should be deleted. OTOH your approach should work - but I'd like to have someone else's opinion. [~blambov] ?
Beside that, the patch should also cover 2.1, as the race condition is also present there.
was (Author: snazy):
Your analysis WRT race condition seems to be correct.
I dug a bit deeper into the whole CL thing. Just an idea (not necessarily correct): Maybe it's worth to make {{CLS.discard()}} synchronized and check inside CLS whether the file should be deleted. OTOH your approach should work - but I'd like to have someone else's opinion. [~blambov] ?
Beside that, the patch should also cover 2.1, as the race condition is also present there.
> AssertionError: attempted to delete non-existing file CommitLog
> ---------------------------------------------------------------
>
> Key: CASSANDRA-10377
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10377
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Environment: CentOS 7.1/x64
> Reporter: Vovodroid
> Priority: Critical
> Attachments: 10377.patch
>
>
> After several hours of script tests (create and drop users, keyspaces and tables) exception is thrown:
> {code}
> ERROR 02:58:39 Failed managing commit log segments. Commit disk failure policy is stop; terminating thread
> java.lang.AssertionError: attempted to delete non-existing file CommitLog-5-1442599226756.log
> at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:122) ~[main/:na]
> at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:149) ~[main/:na]
> at org.apache.cassandra.db.commitlog.CommitLogSegment.discard(CommitLogSegment.java:314) ~[main/:na]
> at org.apache.cassandra.db.commitlog.CommitLogSegmentManager$2.run(CommitLogSegmentManager.java:374) ~[main/:na]
> at org.apache.cassandra.db.commitlog.CommitLogSegmentManager$1.runMayThrow(CommitLogSegmentManager.java:155) ~[main/:na]
> at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) [main/:na]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
> {code}
> I added some logs to *deleteWithConfirm* and it showed that this file really was deleted by previous delete action, i.e. it was second attempt to delete the same log. Commit log with next number exists in the same time, so log was switched.
> I disabled assert and it seems to have no no bad effect.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)