[SERVER-34314] Ensure change stream can resume between entries in applyOps entry Created: 04/Apr/18 Updated: 29/Oct/23 Resolved: 16/Apr/18 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Aggregation Framework |
| Affects Version/s: | None |
| Fix Version/s: | 3.7.4 |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Charlie Swanson | Assignee: | Ian Boros |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | todo_in_code | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||
| Sprint: | Query 2018-04-23 | ||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||
| Linked BF Score: | 0 | ||||||||||||||||||||||||
| Description |
|
The current resume token format is not sufficient to impose a total ordering on all changes once we unpack operations from within an applyOps array into one change each. Changes within an applyOps can all have identical resume tokens if there are multiple updates to the same document. |
| Comments |
| Comment by Githook User [ 16/Apr/18 ] |
|
Author: {'name': 'Daniel Gottlieb', 'email': 'daniel.gottlieb@mongodb.com', 'username': 'dgottlieb'}Message: |
| Comment by Githook User [ 16/Apr/18 ] |
|
Author: {'name': 'Ian Boros', 'email': 'ian.boros@10gen.com'}Message: |
| Comment by Charlie Swanson [ 16/Apr/18 ] |
|
As discussed in an email chain, there needs to be some patch for this ticket before we branch for 3.7.4. We will attempt to fully resolve this ticket today, but if not we will pursue a more limited fix to allow 3.7.4->4.0.0 upgrade with resumable change streams, but generate an error if resuming a change stream with a resume token from an applyOps entry on 3.7.4, allowing all non-applyOps to continue. |
| Comment by Charlie Swanson [ 04/Apr/18 ] |
|
cc david.storch and spencer, I wasn't exactly sure which epic to put this in and which fixVersion to assign, so I took my best guess. We split this off as a separate work item from |