Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't start Cassandra after OS patch up

When I try to start Cassandra after patching my OS, I get this error:

Exception (java.lang.AbstractMethodError) encountered during startup: org.apache.cassandra.utils.JMXServerUtils$Exporter.exportObject(Ljava/rmi/Remote;ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Lsun/misc/ObjectInputFilter;)Ljava/rmi/Remote;

java.lang.AbstractMethodError: org.apache.cassandra.utils.JMXServerUtils$Exporter.exportObject(Ljava/rmi/Remote;ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Lsun/misc/ObjectInputFilter;)Ljava/rmi/Remote;
        at javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:150)
        at javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:135)
        at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:405)
        at org.apache.cassandra.utils.JMXServerUtils.createJMXServer(JMXServerUtils.java:104)
        at org.apache.cassandra.service.CassandraDaemon.maybeInitJmx(CassandraDaemon.java:143)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:188)
        at com.datastax.bdp.server.DseDaemon.setup(DseDaemon.java:476)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:59
        at com.datastax.bdp.DseModule.main(DseModule.java:93)
ERROR [main] 2018-01-17 13:18:03,330  CassandraDaemon.java:705 - Exception encountered during startup
java.lang.AbstractMethodError: org.apache.cassandra.utils.JMXServerUtils$Exporter.exportObject(Ljava/rmi/Remote;ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Lsun/misc/ObjectInputFilter;)Ljava/rmi/Remote;

Does anyone know why, with no other changes, I'm running into this error now?

like image 353
chris Avatar asked Jan 18 '18 19:01

chris


3 Answers

This seems to relate to an upgrade to the JDK to 8u161 which was released 2 days ago.

A ticket has been opened on the Cassandra Jira

There is no published work-around that I can find. You might have to go back to an earlier version of the JDK or wait for Cassandra 3.11.2 which fixes the issue.

Edit: Its worth pointing out that this has now been resolved in 3.11.2 which has been released, so you can simply upgrade to this version to resolve the problem.

like image 100
iandotkelly Avatar answered Nov 12 '22 13:11

iandotkelly


To get Cassandra running I had to install JDK 8u152. Using brew cask install java8 it wasn't possible. I tried using an old version of the cassandra.rb formula but that just got:

Error: Download failed on Cask 'java8' with message: Download failed: http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-macosx-x64.dmg

I had to go here and log in to be able to download the DMG: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

Protip: To still be able to install java8 using homebrew I downloaded the dmg myself, and started a server in the downloads directory:

cd ~/Downloads
php -S 0.0.0.0:3333

And changed the download URL (line 6) in the formula to:

url "http://0.0.0.0:3333/jdk-8u152-macosx-x64.dmg",

Then was able to run:

brew cask install java8

Now Cassandra is running again.

like image 44
Erik Rothoff Avatar answered Nov 12 '22 15:11

Erik Rothoff


You may download the source and add the changed method, compile and add the modified class to the apache-cassandra.jar. You can do the following:

  1. Download org.tar containing the only class to be replaced.
  2. Untar the file using tar -xvf org.tar and you should get org directory
  3. Copy the apache-cassandra jar file. e.g. cp /usr/share/cassandra/apache-cassandra-3.11.1.jar .
  4. Make a backup of the jar before you update. cp apache-cassandra-3.11.1.jar apache-cassandra-3.11.1.jar_backup.
  5. Expecting the current directory contains the following files: apache-cassandra-3.11.1.jar apache-cassandra-3.11.1.jar_backup org org.tar
  6. Execute the following command to update the jar:

    jar uf apache-cassandra-3.11.1.jar org

  7. Replace the file to installation location:

    mv apache-cassandra-3.11.1.jar /usr/share/cassandra

  8. Restart cassandra service

like image 3
James Jithin Avatar answered Nov 12 '22 13:11

James Jithin