无成功方法错误:org.apache.cassandra.db.ColumnFamilyStore.getOverlappingSS表

ulmd4ohb  于 2022-09-27  发布在  Apache
关注(0)|答案(1)|浏览(227)

我已经将其中一个集群节点从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)
gdrx4gfi

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。杰夫吉萨,用它来代替。

编辑

Protocol exception with client networking: org.apache.cassandra.transport.ProtocolException: Invalid or unsupported protocol version (4); supported versions are (3/v3, 4/v4, 5/v5-beta)

错误是由于集群中的混合版本造成的吗?
对我以前见过这种情况。实际上,您可以在驱动程序的连接设置中强制使用协议版本。
祝你好运!

相关问题