[SERVER-39478] Backport failCommand failPoint to 3.6 Created: 08/Feb/19  Updated: 06/Dec/22  Resolved: 26/Feb/19

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

Type: Task Priority: Major - P3
Reporter: Shane Harvey Assignee: Backlog - Replication Team
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
Related
related to DRIVERS-405 Retryable Reads Closed
is related to DRIVERS-2121 Test retryable reads against live fai... Backlog
Assigned Teams:
Replication
Participants:

 Description   

In the design for the retryable reads we decided that drivers should also support retryable reads against 3.6 and 4.0 server in addition to 4.2. However, the driver test suite for retryable reads heavily relies on the failCommand fail point, which doesn't exist in 3.6.

If we don't backport the fail point then retryable reads will be largely untested against a 3.6 server but I don't think this is necessarily a blocker. Retrying is a driver feature and does not depend on server behavior so a driver that works on 4.0 and 4.2 should also work on 3.6. Additionally, we have another driver project that will test retryable reads/writes and transactions against real failover scenarios which should add the lacking test coverage on 3.6.



 Comments   
Comment by Bernie Hackett [ 26/Feb/19 ]

Fine by me.

Comment by Shane Harvey [ 21/Feb/19 ]

I believe SPEC-1218 will cover testing retryable reads against live failover scenarios without using the failCommand fail point. This should give drivers sufficient test coverage on 3.6 without needing this backport. behackett, do you agree?

Comment by Tess Avitabile (Inactive) [ 21/Feb/19 ]

This would not backport cleanly, but I believe it would be possible to backport, even with the TypedCommand refactor. We could evaluate the failpoint for command failure in execCommandDatabase() and runCommand(), just like we do on master. We could evaluate the failpoint for writeConcern failure in runCommandImpl() and execCommandClient(), just like we do on master. We do not have a CommandHelpers struct on 3.6, but we can find another place to put the failpoint implementation.

I am still interested to hear shane.harvey's answers to the questions above in order to decide how to prioritize.

Comment by Gregory McKeon (Inactive) [ 19/Feb/19 ]

We'll look into if there is an obvious place to put the failpoint on 3.6. shane.harvey When will the drivers testing for 3.6 be added? Do you need this on both mongod and mongos? How critical is this for the drivers testing?

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