[
https://issues.apache.org/jira/browse/CASSANDRA-8308?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Joshua McKenzie updated CASSANDRA-8308:
---------------------------------------
Attachment: 8308_v2.txt
v2 attached. Good catch on truncate on nio - I misread the javadoc on that and
also assumed they were going for functional parity with RAF.setLength.
I couldn't find an analogue to RAF.setLength in nio; rather than creating a
single byte ByteBuffer, seeking to DD.getCommitLogSegmentSize(), writing that
byte, and seeking back - I went ahead and just used RAF.setLength to get our
size and then used the FileChannel API to map it later as it seems less prone
to error and opening CLS isn't critical path. If there's a cleaner or more
idiomatic way to do that in nio I'm all for it but I couldn't track it down.
I also added another call to CommitLog.instance.resetUnsafe in SchemaLoader
before we attempt to delete directories as it was failing to delete the
memory-mapped files. Not sure why it worked in v1 but it definitely needs it
now.
Lastly - while I 100% agree the os determination needs to be tightened up (see
CASSANDRA-8452), I'm not sure how that's related to this patch as none of the
changes reference that.
> Windows: Commitlog access violations on unit tests
> --------------------------------------------------
>
> Key: CASSANDRA-8308
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8308
> Project: Cassandra
> Issue Type: Bug
> Reporter: Joshua McKenzie
> Assignee: Joshua McKenzie
> Priority: Minor
> Labels: Windows
> Fix For: 3.0
>
> Attachments: 8308_v1.txt, 8308_v2.txt
>
>
> We have four unit tests failing on trunk on Windows, all with
> FileSystemException's related to the SchemaLoader:
> {noformat}
> [junit] Test
> org.apache.cassandra.db.compaction.DateTieredCompactionStrategyTest FAILED
> [junit] Test org.apache.cassandra.cql3.ThriftCompatibilityTest FAILED
> [junit] Test org.apache.cassandra.io.sstable.SSTableRewriterTest FAILED
> [junit] Test org.apache.cassandra.repair.LocalSyncTaskTest FAILED
> {noformat}
> Example error:
> {noformat}
> [junit] Caused by: java.nio.file.FileSystemException:
> build\test\cassandra\commitlog;0\CommitLog-5-1415908745965.log: The process
> cannot access the file because it is being used by another process.
> [junit]
> [junit] at
> sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86)
> [junit] at
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
> [junit] at
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
> [junit] at
> sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
> [junit] at
> sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
> [junit] at java.nio.file.Files.delete(Files.java:1079)
> [junit] at
> org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:125)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)