Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的Cassandra提示文件不断损坏_Java_Cassandra_Kubernetes - Fatal编程技术网

Java 为什么我的Cassandra提示文件不断损坏

Java 为什么我的Cassandra提示文件不断损坏,java,cassandra,kubernetes,Java,Cassandra,Kubernetes,我们正在运行多个Kubernetes集群,它们运行Cassandra。 在滚动重启Cassandra吊舱时,我们通常的程序是登录每个吊舱并提交一个nodetool drain,然后触发该吊舱的重新创建。但通常当POD重新启动时,我们会出现如下错误 ERROR [HintsDispatcher:2] 2017-08-07 11:09:32,489 HintsDispatchExecutor.java:243 - Failed to dispatch hints file 5fdd139d-4465

我们正在运行多个Kubernetes集群,它们运行Cassandra。 在滚动重启Cassandra吊舱时,我们通常的程序是登录每个吊舱并提交一个
nodetool drain
,然后触发该吊舱的重新创建。但通常当POD重新启动时,我们会出现如下错误

ERROR [HintsDispatcher:2] 2017-08-07 11:09:32,489 HintsDispatchExecutor.java:243 - Failed to dispatch hints file 5fdd139d-4465-4825-85ef-f380bddcb67d-1502100535128-1.hints: file is corrupted ({})

这些损坏的文件阻止卡桑德拉启动。有没有办法告诉Cassandra在停止之前刷新所有缓冲区并停止写入,以确保没有留下损坏的文件?

您可以尝试禁用提示切换,或尝试在耗尽后截断提示:

nodetool truncatehints

如果您关心一致性,请在流程结束后运行修复


警告:如果您使用的是任何一致性设置或RF=1,这可能会导致某些数据丢失。

请包括C*版本可能会导致不一致的情况,或者在某些最坏的情况下会导致数据丢失,您关于不一致的看法是正确的。关于数据丢失,首先取决于一致性设置和集群的操作。如果您在仲裁中运行且rf>=3,并在耗尽节点的情况下执行滚动重启,则数据丢失几乎是不可能的。第二,在运行群集时,由于暗示的切换禁用而导致的数据丢失只有在使用“任意”一致性时才可能发生,而不是使用Cassandra的推荐方式。您的权利是,不应,但在不知道其版本/用例的情况下,这是最坏的情况。删除诸如提示和commitlogs之类的东西应该根据具体的用例进行仔细考虑。我想听听他们使用的版本,但用fix()升级可能更安全。你说得对。我将编辑答案,并警告此解决方案在某些情况下可能导致数据丢失。