-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Replication
-
None
-
Replication
Currently, if member 'A' does not build indexes, then other members that do build indexes cannot replicate oplog data off of A. Here is why this is problematic.
Suppose member 'A' finds itself to be further ahead than all other members, because it was the only member to replicate data some data off the primary before the primary disappeared. Because other members cannot sync from A, other members cannot catch up to A. Also, because A is ahead of everyone else, A will veto every possible election of a new primary. You are stuck with a situation where no primary can be elected.
Perhaps Member::syncable() should distinguish cases where we wish to replicate oplog data or do an initial sync. It makes sense for members that don't build indexes to be ineligible for being the source of an initial sync. However, for the reasons above, they should be allowed to be the source of oplog data during normal replication