[SERVER-39428] Record all indexing errors during simultaneous index builds for later constraint checking Created: 07/Feb/19 Updated: 06/Dec/22 Resolved: 23/Jan/20 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Storage |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major - P3 |
| Reporter: | Louis Williams | Assignee: | Backlog - Storage Execution Team |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | techdebt | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||
| Assigned Teams: |
Storage Execution
|
||||||||||||||||
| Participants: | |||||||||||||||||
| Story Points: | 8 | ||||||||||||||||
| Description |
|
Hybrid index builds only record duplicate key conflicts in a side table for later resolution. With simultaneous index builds, both primary and secondary need to record conflicts in case the secondary becomes primary, so it becomes responsible for constraint checking. Today, secondaries also ignore other types of indexing errors to maintain idempotency, and they can guarantee errors will be resolved because the primary cannot send the "createIndexes" oplog entry unless they are. With simultaneous indexes, secondaries cannot ignore indexing errors and must also record conflicts in a side table because if a secondary becomes primary, it needs to guarantee that all indexing errors are resolved. |