Note that this recipe may also be used to reinstall cassandra!
Upgrading Cassandra via apt-get
to version 3.0.0 (from 2.x) gives the following barf:
ERROR 08:40:42 Exception encountered during startup java.lang.IllegalStateException: One row required, 2 found at org.apache.cassandra.cql3.UntypedResultSet$FromResultSet.one(UntypedResultSet.java:84) ~[apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.schema.LegacySchemaMigrator.readTableTimestamp(LegacySchemaMigrator.java:230) ~[apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.schema.LegacySchemaMigrator.readTable(LegacySchemaMigrator.java:220) ~[apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.schema.LegacySchemaMigrator.lambda$readTables$225(LegacySchemaMigrator.java:214) ~[apache-cassandra-3.0.0.jar:3.0.0] at java.util.ArrayList.forEach(ArrayList.java:1249) ~[na:1.8.0_66] at org.apache.cassandra.schema.LegacySchemaMigrator.readTables(LegacySchemaMigrator.java:214) ~[apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.schema.LegacySchemaMigrator.readKeyspace(LegacySchemaMigrator.java:163) ~[apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.schema.LegacySchemaMigrator.lambda$readSchema$222(LegacySchemaMigrator.java:154) ~[apache-cassandra-3.0.0.jar:3.0.0] at java.util.ArrayList.forEach(ArrayList.java:1249) ~[na:1.8.0_66] at org.apache.cassandra.schema.LegacySchemaMigrator.readSchema(LegacySchemaMigrator.java:154) ~[apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.schema.LegacySchemaMigrator.migrate(LegacySchemaMigrator.java:77) ~[apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:223) [apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:561) [apache-cassandra-3.0.0.jar:3.0.0] at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:689) [apache-cassandra-3.0.0.jar:3.0.0]
I was joking earlier with one of my students that he doesn't know how to use Google (he had some silly error when running Cassandra). Turns out the joke's on me because I could not find this anywhere on the www. Here is what I ended up doing (this works, hopefully):
sudo apt-get purge cassandra
- note that this also removes configuration files.sudo rm -Rf /var/lib/cassandra
and sudo rm -Rf /var/log/cassandra
will restore the order of things in the universesudo apt-get purge cassandra
sudo pip uninstall cassandra-driver
and sudo pip install cassandra-driver
should fix this. Note that the installation part is somewhat slow (but it's not hanged).Cassandra (currently 3.0.0) should automatically start (and run) on port 7000 (default).