我已经将其中一个集群节点从2.2.19升级到3.11.13,但在系统日志中不断出现以下错误。我正在使用TimeWindowCompactionStrategy-3.7.jar
请告诉我如何修复此错误?
ERROR [CompactionExecutor:2338] 2022-09-12 14:40:41,310 CassandraDaemon.java:244 - Exception in thread Thread[CompactionExecutor:2338,1,main]
java.lang.NoSuchMethodError: org.apache.cassandra.db.ColumnFamilyStore.getOverlappingSSTables(Lorg/apache/cassandra/db/lifecycle/SSTableSet;Ljava/lang/Iterable;)Ljava/util/Collection;
at com.jeffjirsa.cassandra.db.compaction.TimeWindowCompactionStrategy.getNextBackgroundSSTables(TimeWindowCompactionStrategy.java:110)
at com.jeffjirsa.cassandra.db.compaction.TimeWindowCompactionStrategy.getNextBackgroundTask(TimeWindowCompactionStrategy.java:79)
at org.apache.cassandra.db.compaction.CompactionStrategyManager.getNextBackgroundTask(CompactionStrategyManager.java:154)
at org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionCandidate.run(CompactionManager.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.cassandra.concurrent.NamedThreadFactory.lambda$threadLocalDeallocator$0(NamedThreadFactory.java:84)
at java.lang.Thread.run(Thread.java:750)
1条答案
按热度按时间gdrx4gfi1#
TimeWindowCompactionStrategy
已合并到Apache Cassandra 3.11.13中,因此您不需要为其包含JAR。删除JAR文件并重新启动节点。编辑
好的,在与Jeff快速交谈后,他有两个建议:
3.7 jar与3.11不兼容。因此,在3.11节点上发布
ALTER TABLE
语法,它将使用与3.11捆绑的TWCS版本。它不会传播到2.2主机(因为架构更改不会跨越主要版本)。您将处于模式不一致状态,但在升级完成之前应该没有问题。在较低的环境中尝试一下,只是为了确保它有效。
另一个选项是从3.11开始使用TWCS版本,用正确的类路径重命名它以使用com。杰夫吉萨,用它来代替。
编辑
错误是由于集群中的混合版本造成的吗?
对我以前见过这种情况。实际上,您可以在驱动程序的连接设置中强制使用协议版本。
祝你好运!