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

Stefania commented on CASSANDRA-10421:
--------------------------------------

Thanks for explaining your opinion. The way you envision it, duplicating files 
does seem easier than segmenting files across disks. It doesn't however change 
the fact that we write more and have therefore more chances of failing to do so 
therefore having to roll back a transaction.

bq. The only downside is that users modifying these files would need to modify 
them all, but this is not overly onerous.

Users are not supposed to modify these files but if they did delete one txn 
file then they could be quite surprised to see temporary files disappear on 
startup because of a txn log in another folder. Especially given that we only 
list temporary files by looking at the local txn file. That was one of my 
concerns. Unless you meant to *not* store the relative file path (the path of 
an sstable relative to a txn file), in which case we would only be able to 
delete temporary files if the txn file in the sstable folder has not been 
deleted?

To be clear, we would roll back the transaction if we failed to write a record 
to _any file_ except for the last record, where we could tolerate failures 
provided we have written to at least one file?


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

Reply via email to