[ https://issues.apache.org/jira/browse/CASSANDRA-10421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14959729#comment-14959729 ]
Ariel Weisberg commented on CASSANDRA-10421: -------------------------------------------- So what I think I see is that when the LogTransaction completes it first writes to the log the commit record, and then starts making permanent changes to the the files on disk (deleting the old ones). But if it hasn't actually synced the log to disk then on a restart we could have a partial log and attempt to roll back, but it is too late because before the crash we had already deleted parts of the before state. At the end we should sync the log files before deleting the obsolete files right? Before we add a new file that we want to have cleaned up maybe we also want to make sure the record is one disk so that it will definitely be cleaned up? Maybe not necessary since it is just additional data that will be compacted later. Maybe optimizing for power failure isn't necessary, but then why are we syncing directories? [Here it seems like you don't sync the folder when appending every record?|https://github.com/apache/cassandra/commit/8e02e47e1a4a86428bec61d8975a9706c544003b#diff-a7c36820cf8658b605948a23e3033f88R76]. Was the intent to sync the folder when creating the log file or when adding a record which indicates the addition of other data files? I am generally +1 other then my confusion over how syncing of the log file contents is handled. The tests don't seem to match trunk. I gave them another spin on the 3.0 branch to get another sample. > Potential issue with LogTransaction as it only checks in a single directory > for files > ------------------------------------------------------------------------------------- > > Key: CASSANDRA-10421 > URL: https://issues.apache.org/jira/browse/CASSANDRA-10421 > Project: Cassandra > Issue Type: Bug > Reporter: Marcus Eriksson > Assignee: Stefania > Priority: Blocker > Fix For: 3.0.0 rc2 > > > When creating a new LogTransaction we try to create the new logfile in the > same directory as the one we are writing to, but as we use > {{[directories.getDirectoryForNewSSTables()|https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/lifecycle/LogTransaction.java#L125]}} > this might end up in "any" of the configured data directories. If it does, > we will not be able to clean up leftovers as we check for files in the same > directory as the logfile was created: > https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/db/lifecycle/LogRecord.java#L163 > cc [~Stefania] -- This message was sent by Atlassian JIRA (v6.3.4#6332)