【问题标题】:JanusGraph 0.5.2 embedded cassandra java.lang.NoSuchMethodError: com.codahale.metrics.SnapshotJanusGraph 0.5.2 嵌入式 cassandra java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot
【发布时间】:2020-12-04 12:06:19
【问题描述】:

我们正在设置具有嵌入式 cassandra 模式的 JanusGraph 0.5.2。
当我们以这种模式启动 Janus 时,它会在其日志中抛出以下异常:

org.apache.cassandra.service.CassandraDaemon - Exception in thread Thread[OptionalTasks:1,5,main]
java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot: method <init>()V not found
    at org.apache.cassandra.metrics.DecayingEstimatedHistogramReservoir$EstimatedHistogramReservoirSnapshot.<init>(DecayingEstimatedHistogramReservoir.java:353)
    at org.apache.cassandra.metrics.DecayingEstimatedHistogramReservoir.getSnapshot(DecayingEstimatedHistogramReservoir.java:224)
    at com.codahale.metrics.Histogram.getSnapshot(Histogram.java:54)
    at com.codahale.metrics.Timer.getSnapshot(Timer.java:142)
    at org.apache.cassandra.db.ColumnFamilyStore$3.run(ColumnFamilyStore.java:446)
    at org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.run(DebuggableScheduledThreadPoolExecutor.java:118)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

我在网上搜索了它似乎是metrics-core的一些maven依赖问题。

有什么方法可以在 JanusGraph 设置中解决这个问题?我们可以从日志中抑制此异常或禁用 Cassandra 指标吗?
这在 Janus 0.3.1 中不会发生

请帮忙

【问题讨论】:

    标签: java cassandra janusgraph


    【解决方案1】:

    所以这个问题最终归结为 Codahale metrics-core JAR 的版本冲突。我相信 Cassandra 目前依赖于 3.1.5,而 JanusGraph(实际上是 Gremlin)附带(两者)3.0.2 和 3.2.2。

    involves removing 3.0.2 来自 $JANUSGRAPH_HOME/lib 的一个解决方案。

    但如果你不想搞乱不同项目的库依赖关系,最好的解决方案可能是确保 JanusGraph 和 Cassandra 在不同的 JVM 中运行。

    【讨论】:

    • 谢谢,试试这个。我们暂时不想在单独的 JVM 中运行。
    • @NumeroUno 太棒了!很高兴我能帮上忙!
    猜你喜欢
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2015-06-19
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多