Årsagen til de intermitterende fejl er på grund af standard læsepræferencer for driveren, hovedsageligt med hensyn til replikasæt. Standard læsepræference er primær. For hver af de nedennævnte tilstande refererer PRIMÆR til masterdatabasen (altid den mest opdaterede) og SEKUNDÆR refererer til slave(r), som grundlæggende er kopierne af master og ikke altid er up-to-date.
PRIMARY: The default read mode. Read from primary only. Throw an error if
primary is unavailable. Cannot be combined with tags.
Løsningen til at ændre læsepræferencen til en af følgende:
PRIMARY PREFERRED: Read from primary if available, otherwise a secondary.
SECONDARY PREFERRED: Read from a secondary if available, otherwise read from the primary.
NEAREST: Read from any member node from the set of nodes which respond the fastest.
Eksempelkode:
// Use this when doing a read if you don't care if the data is always consistent.
// Change the following with secondaryPreferred() if you have high writes, so
// that you don't interfere with them.
ReadPreference preference = ReadPreference.primaryPreferred();
DBCursor cur = new DBCursor(collection, query, null, preference);
For mere information, se kilden .