提示文件夹中存在Cassandra旧提示文件

8cdiaqws  于 2023-10-18  发布在  Cassandra
关注(0)|答案(2)|浏览(164)

在cassandra退役期间,我注意到节点试图发送提示,这需要非常长的时间并且永远不会完成。我检查了提示文件夹,发现提示超过9个月。我不知道为什么那些旧的提示仍然存在于文件夹中,所以我决定删除它们。在我删除它们之后,我注意到system.log中的以下条目

INFO  [HintsDispatcher:1070] 2021-07-08 11:32:01,056  HintsDispatchExecutor.java:141 - Transferring all hints to /10.199.190.233: 7935f1b5-4725-4dc2-ad6d-b883d53d907d
ERROR [HintsDispatcher:1070] 2021-07-08 11:32:01,061  CassandraDaemon.java:207 - Exception in thread Thread[HintsDispatcher:1070,1,RMI Runtime]
java.lang.RuntimeException: java.nio.file.NoSuchFileException: /data/cassandra/data/hints/ce6bb0e3-849f-487d-9274-38b8536b89cf-1603947885707-1.hints

Cassandra在哪里保存提示的元数据,因为system.hints文件夹没有任何条目?
Cassandra版本3.0.12

3pmvbmvn

3pmvbmvn1#

在每个Cassandra节点的内存中都有一个用于跟踪的提示目录。
如果手动删除节点上提示目录的内容,提示目录中的条目将失效,您将遇到所发布的NoSuchFileException
删除提示的正确方法是使用nodetool truncatehints命令。干杯!干杯!

ryevplcw

ryevplcw2#

@Erick Ramirez的回答完全有效。缺点是它会删除所有提示。
如果你只是想删除超过max_hint_window_in_ms(默认为3小时)的剩余提示(如问题中所示),或者即使你因为损坏的提示而遇到错误,这里有一种方法可以安全地删除由datastax documentation启发的选定提示:
1.在给定节点上关闭cassandra,确保没有剩余的java进程
1.从提示文件系统中删除所选提示(确保删除.hints.crc32文件(如果存在))
1.启动Cassandra。

相关问题