#cassandra #nodetool
#cassandra #nodetool
Вопрос:
apache cassandra 3.11.2, 12 узлов, получил эту ошибку в одном узле при запуске очистки nodetool:
ERROR [CompactionExecutor:4996] 2019-04-10 16:09:43,938 CassandraDaemon.java:228 - Exception in thread Thread[CompactionExecutor:4996,1,main]
java.lang.AssertionError: null
at org.apache.cassandra.io.compress.CompressionMetadata$Chunk.<init>(CompressionMetadata.java:474) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.compress.CompressionMetadata.chunkFor(CompressionMetadata.java:239) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.util.MmappedRegions.updateState(MmappedRegions.java:163) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.util.MmappedRegions.<init>(MmappedRegions.java:73) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.util.MmappedRegions.<init>(MmappedRegions.java:61) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.util.MmappedRegions.map(MmappedRegions.java:104) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.util.FileHandle$Builder.complete(FileHandle.java:362) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.sstable.format.big.BigTableWriter.openEarly(BigTableWriter.java:290) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.sstable.SSTableRewriter.maybeReopenEarly(SSTableRewriter.java:179) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.io.sstable.SSTableRewriter.append(SSTableRewriter.java:134) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.db.compaction.CompactionManager.doCleanupOne(CompactionManager.java:1137) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:86) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.db.compaction.CompactionManager$6.execute(CompactionManager.java:475) ~[apache-cassandra-3.11.2.jar:3.11.2]
at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:322) ~[apache-cassandra-3.11.2.jar:3.11.2]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_191]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_191]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_191]
at org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:81) [apache-cassandra-3.11.2.jar:3.11.2]
at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_191]
ERROR [Reference-Reaper:1] 2019-04-10 16:10:01,613 Ref.java:224 - LEAK DETECTED: a reference (org.apache.cassandra.utils.concurrent.Ref$State@6bfdb59e) to class org.apache.cassandra.io.util.FileHandle$Cleanup@1698322065:/data/cassandra/data_files/path/mc-135-big-Index.db was not released before the reference was garbage collected
ERROR [Reference-Reaper:1] 2019-04-10 16:10:01,626 Ref.java:224 - LEAK DETECTED: a reference (org.apache.cassandra.utils.concurrent.Ref$State@6105deee) to class org.apache.cassandra.io.util.MmappedRegions$Tidier@604462250:/data/cassandra/data_files/path/mc-135-big-Data.db was not released before the reference was garbage collected
ERROR [Reference-Reaper:1] 2019-04-10 16:10:01,626 Ref.java:224 - LEAK DETECTED: a reference (org.apache.cassandra.utils.concurrent.Ref$State@22504cf1) to class org.apache.cassandra.utils.concurrent.WrappedSharedCloseable$Tidy@359209204:[Memory@[0..44), Memory@[0..4c8)] was not released before the reference was garbage collected
ERROR [Reference-Reaper:1] 2019-04-10 16:10:01,627 Ref.java:224 - LEAK DETECTED: a reference (org.apache.cassandra.utils.concurrent.Ref$State@5ad45619) to class org.apache.cassandra.io.util.SafeMemory$MemoryTidy@1143514085:Memory@[7eaa3bdf4000..7eaa3bdf7200) was not released before the reference was garbage collected
что нам нужно сделать? заменить этот узел новым узлом? что означает эта ошибка?
мы запускаем очистку после успешного завершения восстановления nodetool на всех наших узлах.
Ответ №1:
Это было проблемой с ранних версий Cassandra и уже было сообщено команде разработчиков. Условие кажется безобидным, но если вы обнаружите, что оно встречается только на том же узле, вам может потребоваться его заменить.
Комментарии:
1. Это произошло на 2 узлах в кластере, есть способ отключить эти узлы и стереть и повторно синхронизировать данные с самого начала? это поможет? или лучше взять новые узлы, добавить их в кластер и после завершения удалить эти 2 проблемных узла? Спасибо.
2. прежде чем выполнять полную замену, вы пробовали восстановить кластер? одновременное выполнение
nodetool repair
одного узла обеспечит согласованность всех данных3. Мы запускаем очистку nodetool после восстановления nodetool, выполненного на всех узлах (по одному узлу за раз) в нашем кластере. исправление выполнено без ошибок …. ремонт nodetool не устранил эту проблему, которая появляется при запуске очистки nodetool. В любом случае, сначала мы добавим 2 новых узла и снова запустим восстановление, а затем удалим проблемные узлы. после удаления мы снова запустим восстановление nodetool. Звучит ли это нормально? Спасибо!
4. да, это может решить вашу проблему; просто не забудьте также запускать
nodetool cleanup
по одному узлу за раз, как только замена узлов будет завершена, поскольку будут изменения в правах собственности на данные в ваших узлах.5. Спасибо! после замены 2 узлов эта ошибка не вернулась на 2 новых узлах, но появилась на одном другом узле в кластере, который раньше не появлялся … может быть, ошибка Кассандры?