修复命令 #6 失败,错误 Nothing to repair for (1838038121817533879,1854751957995458118] in xyz - aborting

Repair command #6 failed with error Nothing to repair for (1838038121817533879,1854751957995458118] in xyz - aborting

节点工具修复命令无法修复部分表。 Cassandra版本是3.11.6版本。我有以下疑问:

  1. 这真的是个问题吗。如果我们忽略这个错误会有什么影响?
  2. 我们如何摆脱某些键空间的这个标记范围?
  3. 它抱怨这个令牌范围的可能原因是什么?

这是错误跟踪:

[2020-11-12 16:33:46,506] Starting repair command #6 (d5fa7530-2504-11eb-ab07-59621b514775), repairing keyspace solutionkeyspace with repair options (parallelism: parallel, primary range: false, incremental: true, job threads: 1, ColumnFamilies: [], dataCenters: [], hosts: [], # of ranges: 256, pull repair: false, ignore unreplicated keyspaces: false)
[2020-11-12 16:33:46,507] Repair command #6 failed with error Nothing to repair for (1838038121817533879,1854751957995458118] in solutionkeyspace - aborting
[2020-11-12 16:33:46,507] Repair command #6 finished with error
error: Repair job has failed with the error message: [2020-11-12 16:33:46,507] Repair command #6 failed with error Nothing to repair for (1838038121817533879,1854751957995458118] in solutionkeyspace - aborting
-- StackTrace --
java.lang.RuntimeException: Repair job has failed with the error message: [2020-11-12 16:33:46,507] Repair command #6 failed with error Nothing to repair for (1838038121817533879,1854751957995458118] in solutionkeyspace - aborting
    at org.apache.cassandra.tools.RepairRunner.progress(RepairRunner.java:116)
    at org.apache.cassandra.utils.progress.jmx.JMXNotificationProgressListener.handleNotification(JMXNotificationProgressListener.java:77)
    at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.dispatchNotification(ClientNotifForwarder.java:583)
    at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.doRun(ClientNotifForwarder.java:533)
    at com.sun.jmx.remote.internal.ClientNotifForwarder$NotifFetcher.run(ClientNotifForwarder.java:452)
    at com.sun.jmx.remote.internal.ClientNotifForwarder$LinearExecutor.run(ClientNotifForwarder.java:108)
    

方案定义

CREATE KEYSPACE solutionkeyspace WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': '1', 'datacenter2': '1'}  AND durable_writes = true;

CREATE TABLE solutionkeyspace.schemas (
    namespace text PRIMARY KEY,
    avpcontainer map<text, text>,
    schemacreationcql text,
    status text,
    version text
) WITH bloom_filter_fp_chance = 0.001
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 10800
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.05
    AND speculative_retry = '99PERCENTILE';

nodetool 状态输出

bash-5.0# nodetool -p 7199 status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  172.16.0.68  5.71 MiB   256          ?       6a4d7b51-b57b-4918-be2f-3d62653b9509  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

您好像是 运行 Cassandra 版本 3.11.9+ 引入了这个新行为。

https://issues.apache.org/jira/browse/CASSANDRA-15160

如果添加以下 nodetool 修复命令行选项,您将不会看到此错误;

-iuk

--ignore-unreplicated-keyspaces

当人们从早期版本的 Cassandra 升级到 3.11.9+ 时,此更改会破坏他们的修复脚本。我们当然注意到了。