Ich habe zwei C * 2.0.2 Knoten in einem DC (mit einer Standardkonfiguration in cassandra.yaml) und einen Schlüsselraum mit RF = 2. Zwei Clients sind mit einem Datastax Java Driver 1.0.3 mit diesem DC verbunden. Clients lesen und schreiben Daten von/nach C * mit CL = ONE ohne Fehler. Aber wenn ich schließe einen Knoten nach unten beide Clients eine riesige Menge von Ausnahmen erhalten:Cassandra NoHostAvailableException, während noch am Leben ist Knoten
com.datastax.driver.core.exceptions.NoHostAvailableException:
All host(s) tried for query failed (no host was tried)
Nach dieser Reihe von Ausnahmen Kunden weiterhin erfolgreich mit einem anderen Knoten arbeiten, die noch am Leben bleibt. Was muss ich tun, um keine NoHostAvailableException zu erhalten, da immer mindestens ein aktiver Knoten vorhanden ist und CL = ONE verwendet wird?
UPDATE: Als ich schloss einer von zwei Knoten wir die folgende Ausnahme in meinem app Protokoll manchmal sehen:
[Reconnection-1] [ERROR] [Control connection] Cannot connect to
any host, scheduling retry
Warum beide Knoten nicht verfügbar sind, wenn ich nur eine heruntergefahren? Der zweite ist noch in diesem Moment am Leben und ich kann mich mit Cqlsh verbinden.
Entschuldigung, dass meine Antwort nicht geholfen hat. Haben Sie versucht, die Ablaufprotokollierung für com.datastax.driver.core.RequestHandler einzuschalten? Es sieht so aus, als wenn Sie den ersten Knoten ausschalten und der zweite aus irgendeinem Grund aus dem Pool geworfen wird. Die Stack-Ablaufverfolgung der in der RequestHandler.logError() -Methode protokollierten Ausnahmen ("Fehler bei der Abfrage von Bla-Bla-Bla") könnte helfen, dies herauszufinden. – Wildfire
Ich werde es ausprobieren, danke. – tilex