The Linux Page

Unable to complete the operation against any hosts — from Cassandra

Today I was testing a new intsallation that I prepared in the last month or so and once I hit Cassandra, I got this strange message:

   NoHostAvailable: ('Unable to complete the operation against any hosts',
   {<Host: 192.168.2.92 dc1>: Unavailable('Error from server: code=1000
   [Unavailable exception] message="Cannot achieve consistency level ONE"
   info={\'required_replicas\': 1, \'alive_replicas\': 0, \'consistency\': \'ONE\'}',)})

I looked for a solution with Google but was not really able to find anything that would explain that error.

Obviously, it is telling us that here is a need for at least 1 replica and right now that Cassandra cannot find any (alive_replicas is zero!)

Now, how come I can connect to Cassandra, the very one I am trying to access, the very one that tells me that there is no replicas. Is there something I do not understand here?

In this case it is a test with a single node, so you would think that it is indeed always going to work...

So... going back to the setup, I looked at my keyspace definition an I see:

    CREATE KEYSPACE snap_websites
           WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '1'}
           AND durable_writes = true;

So I'm all happy about it. After all, it looks good.

Then I wonder, could it be that somehow I need to define what DC1 actually is? I have dealt with something called a topology before and maybe that's it. I read the cassandra.yaml setup file and find out that the topology is indeed used by default, because the default snitch is GossipingPropertyFileSnitch.

    endpoint_snitch: GossipingPropertyFileSnitch

Great. So I'm making progress. I now look inside that topology file and I see two fields:

dc=dc1
rack=rack1

Am I am thinking, well... it also says DC1, doesn't it?

So I decide to search about data center and case sensitivity. It is case sensitive! So "dc1" != "DC1"... Changing the KEYSPACE with "dc1" and the database started to work as expected.

    ALTER KEYSPACE snap_websites
           WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '1'}
           AND durable_writes = true;

(Note: it is not unlikely that you will get a timeout error on this sort of change. If that happens, try the DESCRIBE KEYSPACE snap_websites to verify that it took as expected.)

Syndicate content

SMS From Me Logo

SMS From Me

To automatically start one on one conversations with your online leads.

     

Terms of Site Index

Find the page/content you are looking for with our index.

  • Qt

    Qt is a multi-platform development system for servers, command line tools, and graphical applications (GUI). It allows you to create objects that will work on many operating systems with very minimal if any changes.

  • Twitter
  • fix
  • flash
  • system