web-dev-qa-db-fra.com

Non-revailableException: aucun nœud n'a été disponible pour exécuter la requête

Je n'utilise pas ElasticsSearch. J'essaie d'effectuer des opérations de base de données dans cassandra à l'aide de CQL. J'utilise des threads. Tout en exécutant le code, je reçois toujours l'exception dans le fil après un moment: com.datastax.oss.driver .api.core.nonodeAvailableException: aucun nœud n'a été disponible pour exécuter la requête.

J'ai testé avec même un fil. L'erreur est toujours là. Voici mon code:

InetAddress addrOne = InetAddress.getByName("52.15.195.41");
InetSocketAddress addrSocOne = new InetSocketAddress(addrOne,9042);
CqlSession sessionOne = CqlSession.builder().addContactPoint(addrSocOne).withLocalDatacenter("us-east-2").withKeyspace("test").build();

while(counter <= 100)
{
    String query = "select max(id) FROM samplequeue";
    ResultSet rs = session.execute(query);
    for (Row row : rs) 
    {
        int exS = row.getInt("system.max(id)");
    }
    counter++;
    Thread.sleep(50);
}

C'est un exemple très simple et modifié pour démontrer le problème. Je suis incapable de le résoudre. Tous les threads excitant donnent à la même exception. Je suis en cours d'exécution cassandra 3.11.4 sur AWS. Tous mes nœuds sont opérationnels et je peux effectuer des opérations finement dans le backend.

7
SDt

Vous pouvez exécuter le statut de NODETOOL dans cassandra et vous obtiendrez le nom du datacenter. C'est la valeur que vous devez mettre en withLocalDatacenter méthode:

/opt/Apache-cassandra-3.11.2/bin$ ./nodetool status
Datacenter: **dc1**
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns (effective)  Host ID    Rack
1
Ceci G J