2
  • 操作系统: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

3 回答 3

1

我找到了另一个解决方案

rm -rf apache-cassandra-4.0-beta4/data/saved_caches/*
rm -rf apache-cassandra-4.0-beta4/data/data/system/*
于 2021-07-23T07:08:20.223 回答
1

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

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

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

无论如何,解决方法是手动删除size_estimates/table_estimates/in的快照目录data/system/*。这将允许 Cassandra 成功启动。干杯!

PS 贾博超在 ASF Slack 上证实,解决方法允许他们在节点上启动 C*。

于 2021-03-25T13:56:37.857 回答
0

这是故障节点的重启吗?看起来有些东西正在尝试重播TRUNCATE命令,但没有发送所需的东西(根据CASSANDRA-14905)。

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

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

编辑:

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

于 2021-03-25T13:49:06.427 回答