Ces documents ne sont pas tout à fait correct. Quel que soit le niveau de cohérence (CL), les écritures sont envoyées à toutes les répliques disponibles. Si les répliques ne sont pas disponibles, Cassandra n'enverra pas de requête aux noeuds descendants. S'il n'y a pas assez de disponibles dès le départ pour satisfaire le CL, une exception UnavailableException est lancée et aucune écriture n'est tentée sur un nœud. Toutefois, l'écriture peut toujours aboutir sur certains nœuds et une erreur peut être renvoyée au client. Dans l'exemple de [1], si une réplique est en panne avant que l'écriture ait été tentée, ce qui est écrit est vrai.
Supposons donc que seules 2 répliques reçoivent la mise à jour, l'écriture a échoué. Mais en raison de la cohérence éventuelle, tous les nœuds recevront la mise à jour enfin.
Faites attention cependant: une écriture échouée ne vous dit pas combien de nœuds l'écriture a été faite. Il pourrait ne pas en être ainsi, l'écriture peut ne pas se propager par la suite.
Alors, dois-je réessayer? Ou juste laisser comme ça?
En général, vous devriez réessayer, car il peut ne pas être écrit du tout. Vous devriez seulement considérer votre écriture comme écrite quand vous avez eu un retour réussi de l'écriture.
Si vous utilisez des compteurs, vous devez faire attention aux tentatives. Parce que vous ne savez pas si l'écriture a été faite ou non, vous pourriez obtenir des comptes en double. Pour les compteurs, vous ne voulez probablement pas réessayer (car le plus souvent l'écriture aura été faite sur au moins un nœud, au moins pour des niveaux de cohérence plus élevés).