J'ai un cluster cassandra à 2 nœuds avec un facteur de réplication de 2 et AutoBootStrap=true. Tout se passe bien au démarrage et les deux nœuds se voient l'un l'autre. Appelons ces nœuds A et B.
- Ajouter un ensemble de clés et de colonnes (appelons cet ensemble K1) à Cassandra via le nœud A.
- Connecter au nœud A et lire l'ensemble K1. Même chose pour le nœud B. Succès - Bon
- Tuer le processus Cassandra sur le nœud B.
- Ajouter la série K2 jusqu'à A.
- Connecter au nœud A et lire l'ensemble K2. Bon
- Redémarrer le processus Cassandra sur le nœud B.
- Essayez de lire toutes les touches à partir de B... mettez K1 présent, mettez K2 MANQUANT. (Même après 30 minutes)
- Ajouter K3 à A/B.
- Lire toutes les touches de A - renvoie l'ensemble K1, K2, K3
- Lire toutes les touches de B - retourne l'ensemble K1, K3.
B ne synchronise jamais l'ensemble K2... (Cela fait plus de 12 heures) Pourquoi le noeud B ne voit-il pas l'ensemble K2... quelqu'un a-t-il une idée ?
Informations complémentaires :
Ok... voilà le problème. Le niveau de cohérence de la lecture était fixé à 1 par défaut.
Ainsi, lorsque nous demandons au nœud B l'ensemble K2 et qu'il ne l'a pas (alors qu'il est censé l'avoir en raison du facteur de réplication = 2), il renvoie immédiatement une erreur "Not found" (introuvable).
Cependant, si nous utilisons la cohérence en lecture comme QUORUM ou ALL, alors B est obligé de demander à A, qui renvoie alors la bonne valeur et B synchronise cette clé (l'enregistre localement).
Cela entraîne un autre problème : lorsque le nœud B est mis en service, il ne synchronise pas toutes les données du nœud A, même après une longue période. Maintenant, si le nœud A tombe en panne, comment pouvons-nous accéder à ces données non synchronisées ? (Je viens de tester que ce n'est pas possible)
Je suppose qu'il doit y avoir un moyen de forcer la synchronisation des données. Je vois l'INFO dans la sortie du terminal qui indique qu'un transfert de 15 lignes de A à B a eu lieu lorsque B est apparu, mais B n'a pas ces lignes localement (parce que nous ne pouvons toujours pas les lire à partir de B avec le niveau de cohérence UN). Que se passe-t-il ici ?