cassandra 启动过程中遇到异常请求的许可(0)必须为正

i7uaboj4  于 2022-11-05  发布在  Cassandra
关注(0)|答案(4)|浏览(487)
  • 操作系统:Ubuntu
  • 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
5anewei6

5anewei61#

问题是also asked on the #cassandra channel上的ASF Slack,所以我在这里重新张贴为后代。
根据堆栈跟踪,在尝试访问system.size_estimatessystem.table_estimates的快照子目录时,它似乎失败了。
这是可能的目录得到损坏的结果停电(原因重新启动节点摆在首位),虽然我没有足够的信息来确认这一点。
在任何情况下,解决方法都是手动删除data/system/*中的size_estimates/table_estimates/的快照目录。这将允许Cassandra成功启动。干杯!
P.S. 贾博超 confirmed on ASF Slack that the workaround allowed them to start C* on the node.

dgenwo3n

dgenwo3n2#

我找到了另一个解决办法

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

y0u0uwnf3#

这是否是故障节点的重新启动?看起来像是某个程序正在尝试重放TRUNCATE命令,但未发送所需的某些内容(根据CASSANDRA-14905)。
为了解决这个问题,我将从磁盘中删除system_schema密钥空间并重新启动,它将从另一个节点重新传输模式。
如果这样做不起作用,你可能最终不得不擦除数据并重建节点。如果这样做 * 仍然 * 不起作用,你可能不得不将其删除/重新加入集群。

编辑:

根据Erick的回答,看起来问题出在system密钥空间中size_estimatestable_esimates表的快照目录上。删除这些目录,应该就没事了。

tzdcorbm

tzdcorbm4#

在码头集装箱上也发现了同样的问题。当我查看日志时
码头日志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

使用中
码头货柜室59d4e2890a34
我删除了现有的容器并重新创建了它。新版本运行良好。我不确定是什么损坏了system.size_estimates

相关问题