You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Andreas Schnitzerling (JIRA)" <ji...@apache.org> on 2015/06/17 13:13:01 UTC

[jira] [Comment Edited] (CASSANDRA-8535) java.lang.RuntimeException: Failed to rename XXX to YYY

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

Andreas Schnitzerling edited comment on CASSANDRA-8535 at 6/17/15 11:12 AM:
----------------------------------------------------------------------------

On Windows 7, files and directories cannot be renamed, if they're still open, so we need to close them before:
{code:title=src/java/org/apache/cassandra/io/sstable/SSTableWriter.java}
private Pair<Descriptor, StatsMetadata> close(FinishType type, long repairedAt)
        ....
        Descriptor descriptor = this.descriptor;
        if (type.isFinal)
        {
            dataFile.writeFullChecksum(descriptor);
            writeMetadata(descriptor, metadataComponents);
            // save the table of components
            SSTable.appendTOC(descriptor, components);
+++	    dataFile.close();
            descriptor = rename(descriptor, components);
        }
{code}
Can somebody check/test and maybe commit it? Thx.


was (Author: andie78):
On Windows 7, files and directories cannot be renamed, if they're still open, so we need to close them before:
{code:title=\src\java\org\apache\cassandra\io\sstable\SSTableWriter.java}
private Pair<Descriptor, StatsMetadata> close(FinishType type, long repairedAt)
        ....
        Descriptor descriptor = this.descriptor;
        if (type.isFinal)
        {
            dataFile.writeFullChecksum(descriptor);
            writeMetadata(descriptor, metadataComponents);
            // save the table of components
            SSTable.appendTOC(descriptor, components);
+++	    dataFile.close();
            descriptor = rename(descriptor, components);
        }
{code}
Can somebody check/test and maybe commit it? Thx.

> 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
>              Labels: Windows
>             Fix For: 2.1.5
>
>         Attachments: 8535_v1.txt, 8535_v2.txt, 8535_v3.txt
>
>
> {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)