1

我遵循了单节点的入门说明,它在 cassandra-0.7beta2 中运行良好。但是当尝试对 cassandra-0.7rc1 执行相同操作时,它会输出以下堆栈跟踪:

INFO 20:21:37,771 启动服务器 gossip
 INFO 20:21:37,786 在 CommitLogContext(file='/var/lib 处为 LocationInfo 切换新的 Memtable
/cassandra/commitlog\CommitLog-1290885697489.log',位置=700)
 INFO 20:21:37,786 排队刷新 Memtable-LocationInfo@29247351(227 字节,4 次操作)
 INFO 20:21:37,786 写入 Memtable-LocationInfo@29247351(227 字节,4 次操作)
错误 20:21:38,161 线程 Thread[FlushWriter:1,5,main] 中的致命异常
java.io.IOError: java.io.IOException: 重命名 D:\var\lib\cassandra\data\system\LocationInfo-e-1-Data.db 失败
        在 org.apache.cassandra.io.sstable.SSTableWriter.rename(SSTableWriter.java:214)
        在 org.apache.cassandra.io.sstable.SSTableWriter.closeAndOpenReader(SSTableWriter.java:184)
        在 org.apache.cassandra.io.sstable.SSTableWriter.closeAndOpenReader(SSTableWriter.java:167)
        在 org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:161)
        在 org.apache.cassandra.db.Memtable.access$000(Memtable.java:49)
        在 org.apache.cassandra.db.Memtable$1.runMayThrow(Memtable.java:174)
        在 org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
        在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        在 java.util.concurrent.FutureTask.run(FutureTask.java:138)
        在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        在 java.lang.Thread.run(Thread.java:662)
原因:java.io.IOException: rename failed of D:\var\lib\cassandra\data\system\LocationInfo-e-1-Data.db
        在 org.apache.cassandra.utils.FBUtilities.renameWithConfirm(FBUtilities.java:359)
        在 org.apache.cassandra.io.sstable.SSTableWriter.rename(SSTableWriter.java:210)
        ... 12 更多

有人在 cassandra 的邮件列表上发布了这个问题。尝试重命名 tmp 文件(例如 LocationInfo-tmp-e-1-Data.db)时,似乎出现了问题。它发生在 FBUtilities.java 中:

public static void renameWithConfirm(String tmpFilename, String filename) throws IOException
    {
        if (!new File(tmpFilename).renameTo(new File(filename)))
        {
            throw new IOException("rename failed of " + filename);
        }
    }

我应该注意到 File.renameTo() 在 Windows 上的工作很有趣。

无论如何...帮助?

4

1 回答 1

1

请在此处创建错误报告:https ://issues.apache.org/jira/browse/CASSANDRA

于 2010-11-27T22:30:08.877 回答