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

问题描述 投票:0回答:2

在 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

cassandra cassandra-3.0
2个回答
2
投票

每个 Cassandra 节点上的内存中保存有一个提示目录,用于跟踪。

如果您手动删除节点上的提示目录的内容,提示目录中的条目就会变得过时,并且您会遇到您发布的

NoSuchFileException

删除提示的正确方法是使用

nodetool truncatehints
命令。干杯!


0
投票

@Erick Ramirez 的回答完全有效。缺点是它删除了所有提示。

如果您只是想删除超出

max_hint_window_in_ms
(默认为 3 小时)的剩余提示(如问题中所示),或者即使您因提示损坏而遇到错误,这里有一种方法仅删除受 datastax 文档启发而安全选定的提示:

  1. 在给定节点上关闭 cassandra,确保没有剩余的 java 进程
  2. 从提示文件系统中删除选定的提示(确保删除
    .hints
    .crc32
    文件(如果存在)
  3. 启动卡桑德拉。
© www.soinside.com 2019 - 2024. All rights reserved.