summaryrefslogtreecommitdiff
path: root/jstests/hooks/drop_sharded_collections.js
blob: 5758e3027e54aca2be368b93101cc29d0874a2ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
 * Drops all sharded collections (except for collections used internally,
 * like config.system.sessions).
 */
(function() {
    "use strict";

    load("jstests/libs/fixture_helpers.js");  // For isMongos.

    assert.neq(typeof db, 'undefined', 'No `db` object, is the shell connected to a mongod?');
    assert(FixtureHelpers.isMongos(db), "not connected to mongos");

    let balSettingResult = assert.commandWorked(db.adminCommand({balancerStatus: 1}));
    if (balSettingResult.mode !== 'off') {
        assert.commandWorked(db.adminCommand({balancerStop: 1}));
    }

    db.getSiblingDB('config').collections.find().forEach(collEntry => {
        if (collEntry._id !== 'config.system.sessions') {
            let nsSplit = collEntry._id.split('.');
            const dbName = nsSplit.shift();
            const collName = nsSplit.join('.');

            // Note: drop also cleans up tags and chunks associated with ns.
            assert.commandWorked(db.getSiblingDB(dbName).runCommand({drop: collName}));
        }
    });

    // Turn balancer back on if it was not off earlier.
    if (balSettingResult.mode !== 'off') {
        assert.commandWorked(db.adminCommand({balancerStart: 1}));
    }
})();