cassandra-4.0-beta4 Исключение во время запуска Запрошенные разрешения (0) должны быть положительными

  • ОС :Ubuntu20.04
  • JDK:JDK11
  • Версия Cassandra: apache-cassandra-4.0-beta4

Сообщение об ошибке:

      ERROR [main] 2021-03-25 14:16:15,561 CassandraDaemon.java:822 - Exception encountered during startup
org.apache.cassandra.exceptions.TruncateException: Error during truncate: java.lang.IllegalArgumentException: Requested permits (0) must be positive
    at org.apache.cassandra.cql3.statements.TruncateStatement.executeLocally(TruncateStatement.java:96)
    at org.apache.cassandra.cql3.QueryProcessor.executeInternal(QueryProcessor.java:323)
    at org.apache.cassandra.db.SystemKeyspace.clearAllEstimates(SystemKeyspace.java:1337)
    at org.apache.cassandra.service.StorageService.cleanupSizeEstimates(StorageService.java:3908)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:353)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:676)
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:800)
Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Requested permits (0) must be positive
    at org.apache.cassandra.db.ColumnFamilyStore.runWithCompactionsDisabled(ColumnFamilyStore.java:2329)
    at org.apache.cassandra.db.ColumnFamilyStore.runWithCompactionsDisabled(ColumnFamilyStore.java:2276)
    at org.apache.cassandra.db.ColumnFamilyStore.truncateBlocking(ColumnFamilyStore.java:2256)
    at org.apache.cassandra.cql3.statements.TruncateStatement.executeLocally(TruncateStatement.java:92)
    ... 6 common frames omitted
Caused by: java.lang.IllegalArgumentException: Requested permits (0) must be positive
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:189)
    at com.google.common.util.concurrent.RateLimiter.checkPermits(RateLimiter.java:430)
    at com.google.common.util.concurrent.RateLimiter.reserve(RateLimiter.java:285)
    at com.google.common.util.concurrent.RateLimiter.acquire(RateLimiter.java:273)
    at org.apache.cassandra.db.ColumnFamilyStore.snapshotWithoutFlush(ColumnFamilyStore.java:1801)
    at org.apache.cassandra.db.ColumnFamilyStore.snapshot(ColumnFamilyStore.java:1981)
    at org.apache.cassandra.db.ColumnFamilyStore.snapshot(ColumnFamilyStore.java:1957)
    at org.apache.cassandra.db.ColumnFamilyStore.snapshot(ColumnFamilyStore.java:1945)
    at org.apache.cassandra.db.ColumnFamilyStore$4.run(ColumnFamilyStore.java:2242)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at org.apache.cassandra.db.ColumnFamilyStore.runWithCompactionsDisabled(ColumnFamilyStore.java:2325)
    ... 9 common frames omitted

4 ответа

Вопрос также был задан на канале #cassandra в ASF Slack, поэтому я повторно публикую здесь для потомков.

Судя по трассировке стека, похоже, что при попытке доступа к подкаталогам моментальных снимков system.size_estimates и system.table_estimates.

Возможно, каталоги были повреждены в результате отключения электроэнергии (в первую очередь причина перезапуска узла), хотя у меня нет достаточной информации, чтобы подтвердить это.

В любом случае обходной путь - вручную удалить каталоги моментальных снимков для size_estimates/ и table_estimates/ в data/system/*. Это позволит Кассандре успешно начать работу. Ваше здоровье!

PS超 подтвердил в ASF Slack, что обходной путь позволил им запустить C* на узле.

Это перезапуск отказавшего узла? Похоже, что-то пытается воспроизвести TRUNCATEкоманда, но что-то необходимое не отправляется (согласно CASSANDRA-14905).

Чтобы обойти это, я бы удалил system_schemakeypace с диска и перезапустите. Он должен перенаправить схему с другого узла.

Если это не сработает, возможно, вам придется стереть данные и перестроить узел. И если это все еще не сработает, вам, возможно, придется удалить / снова присоединить его к кластеру.

Редактировать:

Согласно ответу Эрика, похоже, проблема была в каталогах снимков для size_estimates и table_esimates таблицы в systemпространство клавиш. Удалите их, и все будет хорошо.

я нашел другое решение

      rm -rf apache-cassandra-4.0-beta4/data/saved_caches/*
rm -rf apache-cassandra-4.0-beta4/data/data/system/*

Заметил ту же проблему с докер-контейнером. Когда я проверил журналы

логи докера 59d4e2890a34

он выдвинул на первый план эту проблему. то есть

      INFO  [main] 2022-07-22 09:24:16,961 ColumnFamilyStore.java:2242 - Truncating system.size_estimates
INFO  [main] 2022-07-22 09:24:16,964 ColumnFamilyStore.java:2279 - Truncating system.size_estimates with truncatedAt=1658481856962
org.apache.cassandra.exceptions.TruncateException: Error during truncate: java.lang.IllegalArgumentException: Requested permits (0) must be positive

С использованием

докер-контейнер rm 59d4e2890a34

Я удалил существующий контейнер и заново создал его. Новая версия запустилась нормально. Я не уверен, что испорченоsystem.size_estimates.

Другие вопросы по тегам