[SERVER-39451] Add recover to a stable timestamp logic for startIndexBuild, abortIndexBuild, commitIndexBuild Created: 08/Feb/19  Updated: 29/Oct/23  Resolved: 14/Nov/19

Status: Closed
Project: Core Server
Component/s: Storage
Affects Version/s: None
Fix Version/s: 4.3.2

Type: Task Priority: Major - P3
Reporter: Dianna Hohensee (Inactive) Assignee: Louis Williams
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
depends on SERVER-39484 Add step-up and step-down state trans... Closed
depends on SERVER-44350 write rollback tests for two phase in... Closed
is depended on by SERVER-43692 enable two phase index builds by default Closed
Duplicate
is duplicated by SERVER-39559 On rollback simul index builds are in... Closed
Related
related to SERVER-39069 Recover in-progress index builds on r... Closed
related to SERVER-42762 recover to timestamp should ignore no... Closed
related to SERVER-44633 Complete TODO listed in SERVER-39451 Closed
related to SERVER-48419 Extend rollback to recover resumable ... Closed
related to SERVER-44045 allow secondary index builds to start... Closed
related to SERVER-44186 allow index builds to continue runnin... Closed
is related to SERVER-39452 Add rollback via refetch logic for st... Closed
is related to SERVER-44467 Implement startup recovery for two-ph... Closed
Backwards Compatibility: Fully Compatible
Sprint: Execution Team 2019-10-21, Execution Team 2019-11-04, Execution Team 2019-11-18
Participants:
Linked BF Score: 9
Story Points: 8

 Description   

Before entering rollback, we abort all active index builds. After rolling back, we should add logic to reconcileCatalogAndIdents() to restart all unfinished two-phase builds.



 Comments   
Comment by Githook User [ 14/Nov/19 ]

Author:

{'name': 'Louis Williams', 'username': 'louiswilliams', 'email': 'louis.williams@mongodb.com'}

Message: SERVER-39451 Un-blacklist index build rollback tests
Branch: master
https://github.com/mongodb/mongo/commit/208460151d55b345ba9db253912494a8108c9949

Comment by Githook User [ 14/Nov/19 ]

Author:

{'name': 'Louis Williams', 'username': 'louiswilliams', 'email': 'louis.williams@mongodb.com'}

Message: SERVER-39451 Support recover-to-stable rollback for two-phase index builds
Branch: master
https://github.com/mongodb/mongo/commit/103318868c860e441050652b6dae137d0d21d593

Comment by Louis Williams [ 31/Oct/19 ]

Some observations after working through this:

  • Before rollback, in-progress index builds are aborted. We need a way to restart unfinished two-phase index builds after rollback. This logic will likely need to go into the catalog startup path, where we currently have reconileCatalogAndIdents. This requires:
    • Threading the IndexBuildProtocol from IndexBuildsCoordinator to the IndexBuildBlock::init()
    • Persisting the build UUID information into the catalog. An alternative is processing each rolled-back operation and maintaining a list of index builds to rebuild after rollback. The simplicity of a solution that is implemented in the catalog layer means that it will work for rollback and for startup recovery.
Generated at Thu Feb 08 04:52:06 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.