Single voter replica set primaries must wait for the truncate point for {j:true} write concern to ensure user confirmed writes are not lost on recovery after a crash.
Now that primaries will write the oplogTruncateAfterPoint, we must be careful not to truncate writes that were confirmed to the user as persisted, which should be safe across a server crash.
We only want to do this for single voter replica sets, because multi-node multi-voter replica sets are likely to lose {w: 1, j: true} writes anyway after a primary crash due to rollback: they are inherently unsafe already.
Single voter mutli-node replica sets must use the truncate point on startup for cross replica set data consistency. Single voter single node replica sets are doing it for simplicity, not to make startup behavior complicated regarding the truncate point, and avoid breaking downstream dependencies.
- depends on
-
SERVER-44555 Implement replicate before journaling
- Closed