【问题标题】:Issue with writing to commit log file in cassandra在 cassandra 中写入提交日志文件的问题
【发布时间】:2018-01-19 11:12:59
【问题描述】:

我在启动 cassandra 时遇到问题。我正在使用 Datastax 版本。当我启动 cassandra 时,它以以下问题结束。

ERROR [main] 2017-08-10 20:42:04,999 CassandraDaemon.java:654 - Exception  encountered during startup
org.apache.cassandra.io.FSWriteError: java.nio.file.AccessDeniedException: C:\Program Files\DataStax Community\data\commitlog\CommitLog-5-1502421528137.log
at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:131) ~[apache-cassandra-2.2.8.jar:2.2.8]
at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:148) ~[apache-cassandra-2.2.8.jar:2.2.8]
at org.apache.cassandra.db.commitlog.CommitLogSegmentManager.recycleSegment(CommitLogSegmentManager.java:365) ~[apache-cassandra-2.2.8.jar:2.2.8]
at org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:165) ~[apache-cassandra-2.2.8.jar:2.2.8]
at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:284) [apache-cassandra-2.2.8.jar:2.2.8]
at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:532) [apache-cassandra-2.2.8.jar:2.2.8]
at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:641) [apache-cassandra-2.2.8.jar:2.2.8]
Caused by: java.nio.file.AccessDeniedException: C:\Program Files\DataStax Community\data\commitlog\CommitLog-5-1502421528137.log
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83) ~[na:1.7.0_40]
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[na:1.7.0_40]
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[na:1.7.0_40]
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[na:1.7.0_40]
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[na:1.7.0_40]
at java.nio.file.Files.delete(Files.java:1077) ~[na:1.7.0_40]
at org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:125) ~[apache-cassandra-2.2.8.jar:2.2.8]
... 6 common frames omitted

我尝试保留对以下文件夹的所有权限并多次重新启动。

C:\Program Files\DataStax Community\data

但仍然出现同样的错误,我正在使用windows 10

请提出建议。

【问题讨论】:

  • 你试过从管理员启动 cassandra 吗?
  • 我一直说,你不知道什么是“痛苦”,直到你不得不支持 Windows 上的数据库。
  • 你找到解决办法了吗。

标签: cassandra datastax datastax-enterprise datastax-startup


【解决方案1】:

尝试或查看的一些想法:

  • Windows 后台的任何反病毒扫描都需要为您的数据目录设置排除项,否则可能会导致此问题
  • 这可能是一个间歇性问题,由于不容易重现,因此无法修复。 (CASSANDRA-9414) 使用 Windows 的 Cassandra 用户并不多,因此它可以有更多的粗糙边缘。如果可能的话,您可能想考虑一个获得更多测试/使用的 Linux 主机(我知道这不是最有用的答案)
    • 尝试升级到最新版本或切换到 Linux
  • 检查C:\Program Files\DataStax Community\data\commitlog\CommitLog-5-1502421528137.log 的文件权限。您可以更改该文件的权限或删除该提交日志并进行修复以确保您没有触发任何不一致。
    • 需要特别注意的是拥有该文件的用户。有很多工具,如 sstablesplit、sstablelevelreset、sstableexpiredblockers、sstablemetadata、sstable2json,它们将使用您的 cassandra.yaml 在客户端模式下运行 cassandra。由于它具有重叠的数据和提交日志位置,并且它会触发内部写入(特别是 sstable 活动表),因此它最终可能会刷新提交日志或使用运行该工具的任何用户创建新的 sstable。如果该用户与用于运行 Cassandra 的用户不同,则可能会导致类似的故障。工具正在慢慢被重写以减少这个问题(即 sstabledump,4.0 sstablemetadata),但如果您使用这些工具,这样的问题需要注意。

【讨论】:

  • 我尝试了一些选项,提交日志没有被删除..但我使用 MCAFEE shred 选项强行删除了文件。但是当 Windows 重新启动时,它们是用新的时间戳创建的,当我启动 cassandra 时,它又给了我同样的问题。作为最后的尝试,我可能需要安装新的 cassandra 版本,否则我必须在 linux 中尝试。
  • Cassandra 有没有机会写入C:\Program Files\DataStax Community\data\commitlog
  • 如前所述,我卸载了现有的 datastax 版本并安装了另一个 datastax 版本和不同的 JDK,并且这种组合有效。感谢大家的所有时间。
【解决方案2】:

我遇到了同样的问题,在我的例子中,源代码的运行配置中的 JRE 版本不兼容。

我已经解决了将 11.0.2 JRE 版本替换为 1.8.0_181

的问题

Here 是一个文档,您可以在其中确保 Cassandra 的兼容性。

【讨论】:

  • 我在 Windows 10 Enterprise build 17763 和 JRE 1.8.0_181-b13 上使用 Cassandra Unit 3.11.2.0 时遇到此错误。
猜你喜欢
  • 2015-10-19
  • 2019-07-09
  • 2014-12-28
  • 2015-10-28
  • 1970-01-01
  • 2016-11-25
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
相关资源
最近更新 更多