[
https://issues.apache.org/jira/browse/CASSANDRA-10421?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14960123#comment-14960123
]
Ariel Weisberg edited comment on CASSANDRA-10421 at 10/16/15 3:47 AM:
----------------------------------------------------------------------
Syncing the directory won't sync the log file. You need sync the log file
specifically to have that data be available. Syncing the directory makes rename
and file creation durable, but not the files contained in the directory.
bq. I also had to add several log.txnFile().close(); to the unit tests
(whenever we test removeUnfinishedLeftovers) because on Windows we cannot
delete files that are open. This is a bit ugly so maybe we should also go back
to using FileUtils::appendLine, unless again you have performance concerns.
I don't mind opening the file every time. However to sync it after every write
you will need to keep it open long enough to do that. Or open it O_SYNC or
something.
was (Author: aweisberg):
Syncing the directory won't sync the log file. You need sync the log file
specifically to have that data be available. Syncing the directory makes rename
and file creation durable, but not the files contained in the directory.
bq. I also had to add several log.txnFile().close(); to the unit tests
(whenever we test removeUnfinishedLeftovers) because on Windows we cannot
delete files that are open. This is a bit ugly so maybe we should also go back
to using FileUtils::appendLine, unless again you have performance concerns.
I don't mind opening the file every time.
> 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)