在日志中看到 IllegalArgumentException 警告:“非法初始容量:-231741684”

问题描述 投票:0回答:1

我在系统日志中看到以下警告消息。集群中没有看到任何影响,想了解该警告的含义以及如何缓解该警告。

Cassandra 版本 - Apache Cassandra 2.2.10 操作系统 - RHEL 7

WARN  \[insights-3-1\] 2024-04-01 09:01:44,672 UnixSocketClient.java:645 - Error reporting: java.lang.IllegalArgumentException: Illegal initial capacity: -231741684
    at java.util.HashMap.\<init\>(HashMap.java:450) \~\[na:1.8.0_402\]
    at java.util.HashMap.\<init\>(HashMap.java:469) \~\[na:1.8.0_402\]
    at org.apache.cassandra.io.sstable.metadata.MetadataSerializer.deserialize(MetadataSerializer.java:111) \~\[apache-cassandra-2.2.10.jar:2.2.10\]
    at org.apache.cassandra.io.sstable.metadata.MetadataSerializer.deserialize(MetadataSerializer.java:94) \~\[apache-cassandra-2.2.10.jar:2.2.10\]
    at org.apache.cassandra.io.sstable.metadata.MetadataSerializer.deserialize(MetadataSerializer.java:102) \~\[apache-cassandra-2.2.10.jar:2.2.10\]
    at org.apache.cassandra.io.sstable.format.SSTableReader.getApproximateKeyCount(SSTableReader.java:254) \~\[apache-cassandra-2.2.10.jar:2.2.10\]
    at org.apache.cassandra.metrics.ColumnFamilyMetrics$9.getValue(ColumnFamilyMetrics.java:293) \~\[apache-cassandra-2.2.10.jar:2.2.10\]
    at org.apache.cassandra.metrics.ColumnFamilyMetrics$9.getValue(ColumnFamilyMetrics.java:287) \~\[apache-cassandra-2.2.10.jar:2.2.10\]
    at com.datastax.mcac.UnixSocketClient.writeMetric(UnixSocketClient.java:654) \[datastax-mcac-agent.jar:na\]
    at com.datastax.mcac.UnixSocketClient.access$700(UnixSocketClient.java:67) \[datastax-mcac-agent.jar:na\]
    at com.datastax.mcac.UnixSocketClient$2.lambda$onGaugeAdded$0(UnixSocketClient.java:521) \~\[datastax-mcac-agent.jar:na\]
    at com.datastax.mcac.UnixSocketClient.writeGroup(UnixSocketClient.java:634) \[datastax-mcac-agent.jar:na\]
    at com.datastax.mcac.UnixSocketClient.lambda$restartMetricReporting$1(UnixSocketClient.java:613) \[datastax-mcac-agent.jar:na\]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) \~\[na:1.8.0_402\]
    at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:126) \~\[netty-all-4.0.44.Final.jar:4.0.44.Final\]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:399) \~\[netty-all-4.0.44.Final.jar:4.0.44.Final\]
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:307) \~\[netty-all-4.0.44.Final.jar:4.0.44.Final\]
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131) \~\[netty-all-4.0.44.Final.jar:4.0.44.Final\]
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144) \~\[netty-all-4.0.44.Final.jar:4.0.44.Final\]
    at java.lang.Thread.run(Thread.java:750) \~\[na:1.8.0_402\]
cassandra cassandra-2.0
1个回答
0
投票

从堆栈跟踪的快速浏览来看,似乎是在 Cassandra 访问其中一个 SSTable 时引发了异常。尝试访问 SSTable 的目录时似乎失败了 (

*-TOC.txt
)。

我怀疑 TOC 已损坏,因此当

MetadataSerializer.deserialize()
尝试获取 SSTable 组件的数量时,它会失败,导致
HashMap
大小为负值。

您需要查看日志中的其他条目,以获取可能有助于确定根本问题的线索。干杯!

© www.soinside.com 2019 - 2024. All rights reserved.