[SERVER-38562] Implement IndexBuildsCoordinator::voteCommitIndexBuilds Created: 12/Dec/18  Updated: 27/Feb/20  Resolved: 27/Feb/20

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

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

Issue Links:
Depends
depends on SERVER-37639 Add checkIfCommitQuorumIsSatisfied() ... Closed
is depended on by SERVER-39071 implement commit quorum for two phase... Closed
Duplicate
duplicates SERVER-39071 implement commit quorum for two phase... Closed
Sprint: Execution Team 2020-02-10, Execution Team 2020-02-24, Execution Team 2020-03-09
Participants:
Story Points: 5

 Description   

Consider moving the Client::setLastOpToSystemLastOpTime logic into the function logic.

A flag must be set in-memory on the index build whether or not to proceed without voting or end the thread after voting successfully or finding the flag set after the fact. commitIndexBuild, if the build has already reached the 'committing' phase, will set the flag and start a new asynchronous thread for the commit; else, the in-memory flag will be set such that the index build discovers it later and bypasses voting, proceeding straight to commit. This is necessary because stalling commit, and thereby stalling replication on the secondary, cannot be permitted to take as long as a network call can potentially take – a matter of seconds, presumably. The alternative would be to make the voteCommitIndexBuild command sent by the secondary have a short enough timeout that we don't mind stalling replication for that amount of time: but this is risky given that determining a reasonable time for all network and replication latencies might be impossible.

The index build thread would exist after finishing voting, as opposed to waiting on a condition variable for the commitIndexBuild signal, as ReplIndexBuildState is currently expecting with its condition variable already set up and waiting to be used – need to change that.

The flag must also be initialized correctly on index build recovery, depending on the persisted state.



 Comments   
Comment by Benety Goh [ 27/Feb/20 ]

The work described in this ticket will be done as part of SERVER-39701.

Comment by Dianna Hohensee (Inactive) [ 06/Feb/19 ]

Update: we might want an OpObserver to tell the primary when a write to commitReadyMembers occurs (when a member has voted.)

Generated at Thu Feb 08 04:49:18 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.