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