Ремонт Кассандры 3 никогда не заканчивается

У нас есть кластер с 6 узлами в датацентрах (по 3 узла). Мы начинаем ремонт на одном узле, и вскоре после этого в журналах можно найти что-то вроде этого:

ERROR [Repair#1:1] 2016-05-31 01:33:28,075 CassandraDaemon.java:195 -     Exception in thread Thread[Repair#1:1,5,RMI Runtime]
com.google.common.util.concurrent.UncheckedExecutionException: org.apache.cassandra.exceptions.RepairException: [repair #e8e21070-26be-11e6-aae8-77b20cefeee5 on ..... Validation failed in /xx.xxx.xx.xx
    at com.google.common.util.concurrent.Futures.wrapAndThrowUnchecked(Futures.java:1525) ~[guava-18.0.jar:na]
    at com.google.common.util.concurrent.Futures.getUnchecked(Futures.java:1511) ~[guava-18.0.jar:na]
    at org.apache.cassandra.repair.RepairJob.run(RepairJob.java:162) ~[apache-cassandra-3.0.4.jar:3.0.4]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_77]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_77]
    at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_77]

Послесловия, кажется, больше ничего не происходит. Несколько дней не прерывали ремонт, но все равно ничего не происходит. Мы также попробовали это на двух разных кластерах с тем же результатом.

После поиска в Интернете мы наткнулись на https://support.datastax.com/hc/en-us/articles/205256895--Validation-failed-when-running-a-nodetool-repair. В нем говорится, что мы должны запустить «nodetool scrub» и, если это не поможет, «sstablescrub».

Мы попробовали очистку nodetool, но ремонт все еще не помог. Мы начали использовать стабильный скраб, но, похоже, он длился вечно. Он использует только один ЦП на 100%, а файл данных и индекса растет, но теперь он работает более суток, и теперь файл имеет размер только 1,2 ГБ.

Это нормально, что "sstablescrub" работает так медленно?

Кластер уже какое-то время работает, и мы пропустили GCGraceSeconds на ремонт. Может ли это привести к неработающему ремонту?

В настоящее время мы не знаем, как запустить ремонт, надеюсь, кто-то может помочь.


person Mike Petersen    schedule 03.06.2016    source источник
comment
Вы определили точный стабильный файл, который поврежден и привел к сбою восстановления?   -  person Stefan Podkowinski    schedule 03.06.2016
comment
К сожалению, точной стабильной работы мы не нашли.   -  person Mike Petersen    schedule 03.06.2016


Ответы (1)


Исключение указывает на то, что узел не смог получить результаты вычисления дерева Меркла, которое должно было произойти на /xx.xxx.xx.xx. Вместо этого проверьте журналы для этого узла. Узел, на который вы начали ремонт, скорее всего, в порядке и не требует стабильной чистки.

person Stefan Podkowinski    schedule 03.06.2016
comment
На другом узле я получаю сообщение: java.lang.RuntimeException: Невозможно запустить несколько сеансов восстановления в одних и тех же sstables, хотя выполняется только одно восстановление. На любом из остальных узлов запущен процесс ремонта. - person Mike Petersen; 07.06.2016
comment
На вас потенциально может повлиять CASSANDRA-11824 - person Stefan Podkowinski; 07.06.2016