-
Type: Improvement
-
Resolution: Fixed
-
Priority: Minor - P4
-
Affects Version/s: None
-
Component/s: Replication, Testing Infrastructure
-
Fully Compatible
-
v4.0, v3.6
-
Repl 2018-11-19, Repl 2018-12-03, Repl 2018-12-17, Repl 2019-01-14
We could create an initial sync fuzzer suite that is similar in nature to the rollback fuzzer suite. The rollback fuzzer suite has done a good job at exposing subtle bugs in rollback in a relatively deterministic and reproducible way. We do have the jstestfuzz_replication_initsync and initial sync passthrough suites, but a more targeted fuzzer may be better at exposing initial sync bugs more quickly and in more reproducible ways.
We already have a grammar defined that is able to generate operations of all types to run against the database. We could add a suite for initial sync that verifies we are able to successfully clone data and reach data consistency for any sequence of operations executed against the sync source. Using fail points in the initial sync process would allow us to parameterize each test execution on which ops to apply, which documents/collections to clone, etc. If we end up investing time in making initial sync more robust, this could be a good addition to our test infrastructure, and one that shouldn't require too much additional work, since a fair amount of the test infrastructure already exists.
We'll initially only have document modifications and transactions, and look to expand upon this as part of future initial sync work.