[SERVER-36898] Add concurrency workloads for FCV toggling and collection creation Created: 27/Aug/18  Updated: 06/Dec/22  Resolved: 16/Mar/20

Status: Closed
Project: Core Server
Component/s: Concurrency, Testing Infrastructure, Upgrade/Downgrade
Affects Version/s: 3.6.7
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: Maria van Keulen Assignee: Backlog - Storage Execution Team
Resolution: Won't Do Votes: 0
Labels: nyc
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Assigned Teams:
Storage Execution
Participants:

 Description   

Toggling the featureCompatibilityVersion between 3.4 and 3.6 adds UUIDs to collections during upgrade and removes UUIDs from collections during downgrade. There are certain known bugs with operations such as mapReduce replace running concurrently with setFCV due to the way collections are created and dropped during mapReduce (see SERVER-36701). Workloads should be created for operations such as mapReduce and aggregation with $out that themselves create/drop collections running concurrently with non-trivial featureCompatibilityVersion toggling.



 Comments   
Comment by Connie Chen [ 16/Mar/20 ]

The utility to do this now has been reduced over time, so we feel it is not worth doing

Comment by Max Hirschhorn [ 27/Aug/18 ]

maria.vankeulen, I believe the building blocks to exercise toggling the featureCompatibilityVersion while running map-reduce operations already exist as a result of the toggle_feature_compatibility.js and map_reduce*.js FSM workloads. The reason why we've not been able to expose issues involving UUIDs and map-reduce (outside of the powercycle* tasks) is because the fsm_all_simultaneous.js runner file excludes the toggle_feature_compatibility.js FSM workload.

I'd recommend the Storage team selects from the existing FSM workloads (or adds new ones where the desired coverage is lacking) and creates a new fsm_toggle_fcv_simultaneous.js runner file to run them in parallel with the toggle_feature_compatibility.js FSM workload.

jstests/concurrency/fsm_toggle_fcv_simultaneous.js

'use strict';
 
load('jstests/concurrency/fsm_libs/runner.js');
 
var dir = 'jstests/concurrency/fsm_workloads';
 
var whitelist = [
    'map_reduce_drop.js',
    'map_reduce_inline.js',
    'map_reduce_merge.js',
    'map_reduce_merge_nonatomic.js',
    'map_reduce_reduce.js',
    'map_reduce_reduce_nonatomic.js',
    'map_reduce_replace.js',
    'map_reduce_replace_nonexistent.js',
    'map_reduce_replace_remove.js',
    'toggle_feature_compatibility.js',
].map(function(file) {
    return dir + '/' + file;
});
 
runWorkloadsInParallel(ls(dir).filter(function(file) {
    return Array.contains(whitelist, file);
}));

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