[SERVER-76288] While a split or merge is being committed change streams can return a hwm token that skips events on the recipient. Created: 19/Apr/23 Updated: 29/Oct/23 Resolved: 28/Apr/23 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 7.1.0-rc0 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Mickey Winters | Assignee: | Mickey Winters |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||
| Operating System: | ALL | ||||||||
| Sprint: | QE 2023-05-15 | ||||||||
| Participants: | |||||||||
| Description |
|
after the donor has reached the block timestamp it won't allow any more writes so normal resume tokens from an an actual change event can't be higher than block timestamp, but it can still generate high water mark tokens above the block time stamp. if a write happens on the recipient after the commit it could be skipped if the hwmt is higher than the cluster time of that write on the recipient. an easy solution is to disable this block https://github.com/mongodb/mongo/blob/983d4ca5e0c50d644c64be42bd59df481dee0a57/src/mongo/db/exec/collection_scan.cpp#L256-L260 to avoid returning tokens higher than the last write. This solution only works for replica sets and we will need to revisit this problem while working on sub-tenant splits and sharding support for serverless |
| Comments |
| Comment by Githook User [ 28/Apr/23 ] |
|
Author: {'name': 'Mickey. J Winters', 'email': 'mickey.winters@mongodb.com', 'username': 'mjrb'}Message: |