Ho due nodi C * 2.0.2 in un DC (con una configurazione predefinita in cassandra.yaml) e uno spazio tasti con RF = 2. Due client sono collegati a questo controller con un driver Java 1.0 Datastax. I client leggono e scrivono i dati da/a C * con CL = ONE senza errori. Ma quando ho chiuso un nodo verso il basso entrambi i clienti a ottenere una quantità enorme di eccezioni:Cassandra NoHostAvailableException mentre è ancora attivo il nodo
com.datastax.driver.core.exceptions.NoHostAvailableException:
All host(s) tried for query failed (no host was tried)
Dopo quel gruppo di eccezioni clienti continuano a lavorare con successo con un altro nodo che rimane ancora in vita. Cosa devo fare per non ricevere alcuna NoHostAvailableException perché esiste almeno un nodo attivo alla volta e CL = ONE viene utilizzato?
UPDATE: Quando ho chiuso uno dei due nodi a volte vedo la seguente eccezione nel mio ceppo di applicazione:
[Reconnection-1] [ERROR] [Control connection] Cannot connect to
any host, scheduling retry
Perché entrambi i nodi non sono disponibili se chiudo un solo verso il basso? Il secondo è ancora vivo in questo momento e posso collegarmi ad esso con cqlsh.
Mi dispiace che la mia risposta non sia stata d'aiuto. Hai provato a attivare la registrazione di traccia per com.datastax.driver.core.RequestHandler? Sembra che quando si spegne il primo nodo, il secondo viene espulso dal pool per qualche motivo. La traccia di stack delle eccezioni registrate nel metodo RequestHandler.logError() ("Errore durante la ricerca di bla-bla-bla") potrebbe aiutare a scoprirlo. – Wildfire
Lo proverò, grazie. – tilex