JanusGraph 0.5.2 tertanam cassandra java.lang.NoSuchMethodError: com.codahale.metrics.Snapshot

Kami sedang menyiapkan JanusGraph 0.5.2 dengan mode cassandra tertanam.
Saat kami memulai Janus dalam mode ini, ia memunculkan pengecualian di bawah ini dalam lognya:

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)

Saya mencarinya di internet, sepertinya ada masalah ketergantungan pakar pada inti metrik.

Adakah cara untuk mengatasi ini dalam pengaturan JanusGraph? Bisakah kita menyembunyikan pengecualian ini dari log atau menonaktifkan metrik Cassandra?
Hal ini biasanya tidak terjadi di Janus 0.3.1

Tolong bantu


person NumeroUno    schedule 04.12.2020    source sumber


Jawaban (1)


Jadi masalah ini pada akhirnya disebabkan oleh versi JAR inti metrik Codahale yang saling bertentangan. Saya yakin Cassandra saat ini bergantung pada 3.1.5, dan JanusGraph (sebenarnya Gremlin) dikirimkan dengan (keduanya) 3.0.2 dan 3.2.2.

Salah satu solusi yang ada melibatkan penghapusan 3.0.2 dari $JANUSGRAPH_HOME/lib.

Namun jika Anda tidak ingin dipusingkan dengan dependensi perpustakaan dari proyek yang berbeda, solusi terbaik mungkin adalah memastikan JanusGraph dan Cassandra berjalan di JVM terpisah.

person Aaron    schedule 04.12.2020
comment
Terima kasih, akan mencobanya. Kami tidak ingin menjalankan JVM terpisah untuk saat ini. - person NumeroUno; 04.12.2020
comment
Terima kasih banyak @Aaron, ini berhasil. - person NumeroUno; 04.12.2020
comment
@NumeroUno Luar Biasa! Senang aku dapat membantu! - person Aaron; 04.12.2020