JanusGraph 0.5.2 встроенная кассандра java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot

Мы настраиваем JanusGraph 0.5.2 со встроенным режимом cassandra.
Когда мы запускаем 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)

Я искал его в сети, похоже, это проблема с зависимостью maven от ядра метрик.

Есть ли способ решить эту проблему в настройке JanusGraph? Можем ли мы подавить это исключение из журналов или отключить показатели Cassandra?
В Janus 0.3.1 этого не происходит.

Пожалуйста помоги


person NumeroUno    schedule 04.12.2020    source источник


Ответы (1)


Таким образом, эта проблема в конечном итоге сводится к конфликтующим версиям JAR ядра метрик Codahale. Я считаю, что Cassandra в настоящее время зависит от версии 3.1.5, а JanusGraph (на самом деле Gremlin) поставляется с (обеими) версиями 3.0.2 и 3.2.2.

Одно из решений, , включает удаление 3.0.2 из $JANUSGRAPH_HOME/lib.

Но если вы не хотите возиться с зависимостями библиотек разных проектов, лучшим решением, вероятно, будет обеспечение того, чтобы JanusGraph и Cassandra работали в отдельных JVM.

person Aaron    schedule 04.12.2020
comment
Спасибо, попробую. Мы не хотим пока запускать отдельную JVM. - person NumeroUno; 04.12.2020
comment
Большое спасибо @Aaron, это сработало. - person NumeroUno; 04.12.2020
comment
@NumeroUno Отлично! Рад, что смог помочь! - person Aaron; 04.12.2020