我遵循了单节点的入门说明,它在 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 上的工作很有趣。
无论如何...帮助?