java - JanusGraph 0.5.2 嵌入式 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$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 中不会发生
请帮忙
解决方案
所以这个问题最终归结为 Codahale metrics-core JAR 的版本冲突。我相信 Cassandra 目前依赖于 3.1.5,而 JanusGraph(实际上是 Gremlin)附带(两者)3.0.2 和 3.2.2。
一种解决方案是从$JANUSGRAPH_HOME/lib
.
但是如果你不想搞乱不同项目的库依赖关系,最好的解决方案可能是确保 JanusGraph 和 Cassandra 在不同的 JVM 中运行。
推荐阅读
- angular - 在 Angular 中使用列数据填充数据表中的行
- android - 如果 Android 设备处于暗模式,我如何以编程方式检测?
- scala - 使用 Scala 模式匹配实现 BST
- c# - 如何为注册页面实现工作流核心
- python - 嵌套的 try/except 是否有可能导致堆栈溢出?
- sql - 过去几周的时间序列收入计算
- android - Android项目未构建
- xamarin.android - TelephonyManager.ExtraIncomingNumber 在 android pie 中总是返回 null
- matlab - 计算有效扩散系数
- wcf - 如何修复打开服务主机时发生的 AddressInUseException