Cassandra的nodetool rebuild_index卡在nodetool的compactionstats中100%,如何刷新它并强制执行压缩?

问题描述

我有一个运行Cassandra框架的DC / OS群集,三个主服务器和六个工作器,由于注册表问题导致框架崩溃后,Cassandra节点未与数据同步,为了同步它,我试图修复Keyspaces并一一检查“ ./nodetool compactionstats”状态。

修复后,我遇到了“ ./nodetool compactionstats”问题:

[root@server-worker1 bin]# ./nodetool compactionstats
pending tasks: 2
- system.indexInfo: 1
- my_app_prod.profile_activation_history: 1

id                                   compaction type       keyspace          table                      completed total   unit  progress
0d49d3d0-19d6-11eb-a65c-f71e0bcef8b1 Secondary index build my_app_prod profile_activation_history 3010912   3010912 bytes 100.00% 
Active compaction remaining time :   0h00m00s
[root@server-worker1 bin]#

任务停留在100%,我如何强制完成?或刷新“ ./nodetool compactionstats”的状态?

我签入了节点,并且任何节点的内存中都没有运行这样的进程。我需要继续修复键空间,但是这个任务就摆在它的前面,因为在完成此任务之前,修复将等待。

解决方法

当在表上具有二级索引时,二级索引构建是Cassandra正常操作的一部分。节点收到的任何新突变都将被索引。

它作为压缩线程在与Cassandra进程相同的JVM中运行,因此您不会在机器的进程表上看到单独的进程。

没有可以“强制”完成操作的操作。它们将在所需的数据索引完成后完成。

修复也是Cassandra正常操作的一部分。在修复期间将新数据流式传输到节点时,接收节点也将对该数据进行索引。我要说的是,这些操作是并行进行的,一个操作不会阻止另一个操作。干杯!