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


  • OS:Ubuntu20.4
  • 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

ASF Slack的#cassandra频道上也有人问过这个问题,所以我在这里重新发布,以供后人参考。

根据堆栈跟踪,在尝试访问system.size_estimatessystem.table_estimates的快照子目录时,它似乎失败了。

目录可能是由于停电而损坏的(首先是重新启动节点的原因(,尽管我没有足够的信息来证实这一点。

在任何情况下,解决方法都是手动删除data/system/*size_estimates/table_estimates/的快照目录。这将使卡桑德拉能够成功启动。干杯

第页。S贾博超在ASF Slack上确认,该解决方案允许他们在节点上启动C*。

我找到了另一个解决方案

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

这是一个失败节点的重新启动吗?看起来好像有什么东西试图重播TRUNCATE命令,但所需的东西没有被发送(根据CASSANDRA-14905(。

为了解决这个问题,我将从磁盘中删除system_schema密钥空间,然后重新启动。它应该从另一个节点重新流式传输模式。

如果这不起作用,您可能最终不得不擦除数据并重建节点。如果仍然不起作用,您可能需要将其删除/重新加入集群。

编辑:

根据Erick的回答,问题似乎出在system密钥空间中size_estimatestable_esimates表的快照目录上。去掉那些,你就应该很好。

注意到docker容器也存在同样的问题。当我检查日志

docker日志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

最新更新