代码之家  ›  专栏  ›  技术社区  ›  M. Afathi

文件被另一个进程Cassandra使用

  •  1
  • M. Afathi  · 技术社区  · 7 年前

    System.Diagnostics.Process .我正在使用该进程调用cqlsh批处理脚本以运行此命令: cqlsh -f file.cql host

    我有一个例外:

    ERROR [NonPeriodicTasks:1] 2017-06-16 12:50:38,461 CassandraDaemon.java (line 199) Exception in thread Thread[NonPeriodicTasks:1,5,main]
    FSWriteError in ...\system\schema_columnfamilies\system-schema_columnfamilies-jb-42-Index.db
        at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:122)
        at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:108)
        at org.apache.cassandra.io.sstable.SSTable.delete(SSTable.java:145)
        at org.apache.cassandra.io.sstable.SSTableDeletingTask.run(SSTableDeletingTask.java:86)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(Unknown Source)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    Caused by: java.nio.file.FileSystemException: ...\system\schema_columnfamilies\system-schema_columnfamilies-jb-42-Index.db: The process cannot access the file because it is being used by another process.
    
        at sun.nio.fs.WindowsException.translateToIOException(Unknown Source)
        at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
        at sun.nio.fs.WindowsException.rethrowAsIOException(Unknown Source)
        at sun.nio.fs.WindowsFileSystemProvider.implDelete(Unknown Source)
        at sun.nio.fs.AbstractFileSystemProvider.delete(Unknown Source)
        at java.nio.file.Files.delete(Unknown Source)
        at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:118)
        ... 10 more
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Aaron    7 年前

    这个问题(以及其他一些问题)是阻碍Cassandra在3.x版本之前的Windows上正常运行的原因。Windows不喜欢多个进程同时访问同一个文件。

    基本上,这里有两种选择:

    • 将Cassandra升级到(至少)3.10。当然,你不能直接从2.0升级到3.x,所以你需要先升级到2.1。2.0系列在不久前就已经过时了,所以无论如何,升级是你应该考虑的事情。