MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Rspec-Tests schlagen zufällig fehl, wenn ActiveRecord-Objekte analysiert werden, die von Mongoid-Ereignissen generiert wurden

In einem typischen Mongodb-Setup kann es zwischen der erfolgreichen Rückgabe eines Datenbankschreibvorgangs und dem Lesen dieser Daten zu einer Verzögerung kommen. Dafür gibt es zwei Gründe:

  • Zur Leistungssteigerung kann ein "unsicherer" Schreibvorgang zurückkehren, bevor die Daten auf die Festplatte übertragen werden.
  • Mongodb verwendet Replikatsätze und es gibt eine Replikationsverzögerung. Üblicherweise werden Lesevorgänge als eine Form des Lastenausgleichs auf die Replicas verteilt. Selbst wenn Sie einen sicheren Schreibvorgang verwenden, lesen Sie möglicherweise von einem anderen Server als dem, auf den Sie gerade geschrieben haben, und sehen daher die gerade geschriebenen Daten nicht.

Damit Sie die gerade mit Mongoid geschriebenen Daten immer sofort zurücklesen können, müssen Sie die Datenbanksitzungsoptionen consistency: :strong, safe: true setzen , von denen keines der Standardwert ist.