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

Joshua McKenzie commented on CASSANDRA-8535:
--------------------------------------------

Looks like the problem is in the logic for SSTableRewriter on Windows.  During 
finishAndMaybeThrow, we switchWriter(...) which closes our SSTableWriter (ifile 
and dfile) and opens a reader to the file.  Shortly after, we attempt to close 
the SSTableWriter again, this time with the finishType to attempt a rename.  
Problem is, we now have an SSTR with that ifile and dfile open on tmpfiles so 
the rename fails.

This doesn't happen on trunk as we're using FileChannels and nio in 
RandomAccessReader instead of RandomAccessFile, meaning we can safely rename 
files with open handles.  I'll see if I can't get a Windows-specific workaround 
for SSTableRewriter in for this ticket for 2.1; isolating the fix to windows 
means I'm comfortable with it being on the 2.1 branch and we'll need it on 3.0 
for mmap support anyway.

> java.lang.RuntimeException: Failed to rename XXX to YYY
> -------------------------------------------------------
>
>                 Key: CASSANDRA-8535
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8535
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: Windows 2008 X64
>            Reporter: Leonid Shalupov
>            Assignee: Joshua McKenzie
>             Fix For: 2.1.3
>
>
> {code}
> java.lang.RuntimeException: Failed to rename 
> build\test\cassandra\data;0\system\schema_keyspaces-b0f2235744583cdb9631c43e59ce3676\system-schema_keyspaces-tmp-ka-5-Index.db
>  to 
> build\test\cassandra\data;0\system\schema_keyspaces-b0f2235744583cdb9631c43e59ce3676\system-schema_keyspaces-ka-5-Index.db
>       at 
> org.apache.cassandra.io.util.FileUtils.renameWithConfirm(FileUtils.java:170) 
> ~[main/:na]
>       at 
> org.apache.cassandra.io.util.FileUtils.renameWithConfirm(FileUtils.java:154) 
> ~[main/:na]
>       at 
> org.apache.cassandra.io.sstable.SSTableWriter.rename(SSTableWriter.java:569) 
> ~[main/:na]
>       at 
> org.apache.cassandra.io.sstable.SSTableWriter.rename(SSTableWriter.java:561) 
> ~[main/:na]
>       at 
> org.apache.cassandra.io.sstable.SSTableWriter.close(SSTableWriter.java:535) 
> ~[main/:na]
>       at 
> org.apache.cassandra.io.sstable.SSTableWriter.finish(SSTableWriter.java:470) 
> ~[main/:na]
>       at 
> org.apache.cassandra.io.sstable.SSTableRewriter.finishAndMaybeThrow(SSTableRewriter.java:349)
>  ~[main/:na]
>       at 
> org.apache.cassandra.io.sstable.SSTableRewriter.finish(SSTableRewriter.java:324)
>  ~[main/:na]
>       at 
> org.apache.cassandra.io.sstable.SSTableRewriter.finish(SSTableRewriter.java:304)
>  ~[main/:na]
>       at 
> org.apache.cassandra.db.compaction.CompactionTask.runMayThrow(CompactionTask.java:200)
>  ~[main/:na]
>       at 
> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) 
> ~[main/:na]
>       at 
> org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:75)
>  ~[main/:na]
>       at 
> org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:59)
>  ~[main/:na]
>       at 
> org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionTask.run(CompactionManager.java:226)
>  ~[main/:na]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
> ~[na:1.7.0_45]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
> ~[na:1.7.0_45]
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>  ~[na:1.7.0_45]
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>  [na:1.7.0_45]
>       at java.lang.Thread.run(Thread.java:744) [na:1.7.0_45]
> Caused by: java.nio.file.FileSystemException: 
> build\test\cassandra\data;0\system\schema_keyspaces-b0f2235744583cdb9631c43e59ce3676\system-schema_keyspaces-tmp-ka-5-Index.db
>  -> 
> build\test\cassandra\data;0\system\schema_keyspaces-b0f2235744583cdb9631c43e59ce3676\system-schema_keyspaces-ka-5-Index.db:
>  The process cannot access the file because it is being used by another 
> process.
>       at 
> sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) 
> ~[na:1.7.0_45]
>       at 
> sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) 
> ~[na:1.7.0_45]
>       at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:301) 
> ~[na:1.7.0_45]
>       at 
> sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287) 
> ~[na:1.7.0_45]
>       at java.nio.file.Files.move(Files.java:1345) ~[na:1.7.0_45]
>       at 
> org.apache.cassandra.io.util.FileUtils.atomicMoveWithFallback(FileUtils.java:184)
>  ~[main/:na]
>       at 
> org.apache.cassandra.io.util.FileUtils.renameWithConfirm(FileUtils.java:166) 
> ~[main/:na]
>       ... 18 common frames omitted
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to