JanusGraph 0.5.2 embedded cassandra java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot
JanusGraph 0.5.2 embedded cassandra java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot
我们正在使用嵌入式 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.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.access1(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
中不会发生
请帮忙
所以这个问题最终归结为 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 中。
我们正在使用嵌入式 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.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.access1(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
请帮忙
所以这个问题最终归结为 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 中。