...
BugZero found this defect 2739 days ago.
When running in Master-Slave mode, the replication "commit point" never advances, since there is no consensus protocol used in this mode. For replication recovery and rollback purposes, in the ReplicationCoordinator we maintain a list of "stableTimestampCandidates" which is updated with a new timestamp every time we update our lastApplied optime. The current "stable" timestamp is calculated as the largest timestamp in this list less than the commit point. We will remove timestamps from this list when they are less than the current stable timestamp. If we add timestamps to this list, but the commit point never advances, then the stableTimestampCandidates list will grow unbounded. This can cause performance issues as this list grows and we keep trying to insert things to it every time an operation comes in. This was causing a test to timeout when we insert a few hundred thousand documents (see linked BF). To fix this, we should check if we are running in master slave mode and refrain from updating the stable timestamp list if so.
xgen-internal-githook commented on Fri, 11 Aug 2017 17:12:19 +0000: Author: {'name': 'William Schultz', 'email': 'william.schultz@mongodb.com'} Message: SERVER-30589 Don't add stable timestamp candidates when in master slave mode Branch: master https://github.com/mongodb/mongo/commit/3a6f7017c2577af96c377f1500998565737952e6 xgen-internal-githook commented on Thu, 10 Aug 2017 20:01:37 +0000: Author: {'name': 'William Schultz', 'username': 'will62794', 'email': 'william.schultz@mongodb.com'} Message: Revert "SERVER-30589 Dont update stable timestamp candidates in master slave mode" This reverts commit 53db8a7a0cde13aa0c54c6979843faac7fa8332e. Branch: master https://github.com/mongodb/mongo/commit/803beb68404bd6b0b678ac698b7f2011a64dab12 william.schultz commented on Thu, 10 Aug 2017 18:20:10 +0000: milkie Yes, it seems this could also be an issue in that case. We should probably discuss, generally, the performance impacts of this list growing very large, and how much we are worried about mitigating those impacts. xgen-internal-githook commented on Thu, 10 Aug 2017 18:14:07 +0000: Author: {'username': 'will62794', 'email': 'william.schultz@mongodb.com', 'name': 'William Schultz'} Message: SERVER-30589 Dont update stable timestamp candidates in master slave mode Branch: master https://github.com/mongodb/mongo/commit/53db8a7a0cde13aa0c54c6979843faac7fa8332e milkie commented on Thu, 10 Aug 2017 17:24:21 +0000: Is this a problem for replica sets where the commit level doesn't move?