- 操作系统: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
4条答案
按热度按时间5anewei61#
问题是also asked on the #cassandra channel上的ASF Slack,所以我在这里重新张贴为后代。
根据堆栈跟踪,在尝试访问
system.size_estimates
和system.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.
dgenwo3n2#
我找到了另一个解决办法
y0u0uwnf3#
这是否是故障节点的重新启动?看起来像是某个程序正在尝试重放
TRUNCATE
命令,但未发送所需的某些内容(根据CASSANDRA-14905)。为了解决这个问题,我将从磁盘中删除
system_schema
密钥空间并重新启动,它将从另一个节点重新传输模式。如果这样做不起作用,你可能最终不得不擦除数据并重建节点。如果这样做 * 仍然 * 不起作用,你可能不得不将其删除/重新加入集群。
编辑:
根据Erick的回答,看起来问题出在
system
密钥空间中size_estimates
和table_esimates
表的快照目录上。删除这些目录,应该就没事了。tzdcorbm4#
在码头集装箱上也发现了同样的问题。当我查看日志时
码头日志59d4e2890a34
它强调了这一问题。
使用中
码头货柜室59d4e2890a34
我删除了现有的容器并重新创建了它。新版本运行良好。我不确定是什么损坏了
system.size_estimates
。