MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Les tests Rspec échouent de manière aléatoire lors de l'analyse d'objets ActiveRecord générés par des événements Mongoid

Dans une configuration typique de Mongodb, il peut y avoir un délai entre le retour réussi d'une écriture de base de données et le moment où ces données peuvent être lues. Il y a deux raisons à cela :

  • Pour des gains de performances, une écriture "non sécurisée" peut être renvoyée avant que les données ne soient validées sur le disque.
  • Mongodb utilise des jeux de répliques et il y a un délai de réplication. Généralement, les lectures sont distribuées aux répliques comme une forme d'équilibrage de charge, donc même si vous utilisez une écriture sécurisée, vous pouvez lire à partir d'un serveur différent de celui sur lequel vous venez d'écrire et donc ne pas voir les données que vous venez d'écrire.

Pour vous assurer que vous pouvez toujours relire immédiatement les données que vous venez d'écrire à l'aide de Mongoid, vous devez définir les options de session de base de données consistency: :strong, safe: true , dont aucun n'est la valeur par défaut.