Кассандра сгенерирует исключение ArrayIndexOutOfBoundsException при сжатии последнего уровня - PullRequest
0 голосов
/ 28 марта 2020

Мой тест выглядит следующим образом:

  1. Создайте таблицу с помощью LeveledCompactionStrategy, и ее параметры 'enabled': 'true', 'fanout_size': '2', 'max_threshold': '32' , 'min_threshold': '4', 'sstable_size_in_mb': '2' (fanout_size и sstable_size_in_mb слишком малы, чтобы было проще воспроизвести проблему);
  2. Вставить данные в таблицу с помощью стресса;
  3. Подождите, Кассандра выдает исключение ArrayIndexOutOfBoundsException, когда компактные sstables level9 (этот уровень больше 1,001). Исключение будет происходить снова каждую минуту после того, как это произошло

    ОШИБКА [CompactionExecutor: 4] 2020-03-28 08: 59: 00,990 CassandraDaemon. java: 442 - Исключение в потоке Thread [CompactionExecutor: 4, 1, main] java .lang.ArrayIndexOutOfBoundsException: 9 в орг. apache .cassandra.db.compaction.LeveledManifest.getLevel (LeveledManifest. java: 814) в орг. apache .cassandra.db.compaction .LeveledManifest.getCandidatesFor (LeveledManifest. java: 746) в org. apache .cassandra.db.compaction.LeveledManifest.getCompactionCandidates (LeveledManifest. java: 398) в org. * 1024.b. .LeveledCompactionStrategy.getNextBackgroundTask (LeveledCompactionStrategy. java: 131) в org. apache .cassandra.db.compaction.CompactionStrategyHolder.lambda $ getBackgroundTaskSuppliers * 0. 10. .G. db.compaction.AbstractStrategyHolder $ TaskSupplier.getTask (AbstractStrategyHolder. java: 66) в орг. apache .cassandra.db.compaction.CompactionStrategyManager.g etNextBackgroundTask (CompactionStrategyManager. java: 214) в орг. apache .cassandra.db.compaction.CompactionManager $ BackgroundCompactionCandidate.run (CompactionManager. java: 289) в java .util.concurrent $. вызов (Executors. java: 511) по java .util.concurrent.FutureTask.run $$$ capture (FutureTask. java: 266) по java .util.concurrent.FutureTask.run (FutureTask. java) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1149) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 624) в .netty.util.concurrent.FastThreadLocalRunnable.run (FastThreadLocalRunnable. java: 30) в java .lang.Thread.run (поток. java: 748)

Я проверил это на Cassandra версии 3.11.3 и 4.0-alpha3. Исключение все произошло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...