File: multi_cluster.js

package info (click to toggle)
mongodb 1%3A2.4.10-5
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 82,464 kB
  • sloc: cpp: 740,225; ansic: 152,098; sh: 13,820; python: 11,864; makefile: 1,012; perl: 922; pascal: 617; java: 452; lisp: 222; asm: 174
file content (131 lines) | stat: -rw-r--r-- 4,120 bytes parent folder | download | duplicates (3)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//
// MultiVersion utility functions for clusters
//

ShardingTest.prototype.upgradeCluster = function( binVersion, options ){
    
    options = options || {}
    if( options.upgradeShards == undefined ) options.upgradeShards = true
    if( options.upgradeConfigs == undefined ) options.upgradeConfigs = true
    if( options.upgradeMongos == undefined ) options.upgradeMongos = true
    
    if( options.upgradeMongos ){
        
        // Upgrade all mongos hosts if specified
        
        var numMongoses = this._mongos.length
        
        for( var i = 0; i < numMongoses; i++ ){
            
            var mongos = this._mongos[i]
            
            MongoRunner.stopMongos( mongos )
            
            mongos = MongoRunner.runMongos({ restart : mongos,
                                             binVersion : binVersion,
                                             appendOptions : true })
            
            this[ "s" + i ] = this._mongos[i] = mongos
            if( i == 0 ) this.s = mongos
        }
        
        this.config = this.s.getDB( "config" )
        this.admin = this.s.getDB( "admin" )
    }
    
    var upgradedSingleShards = []
    
    if( options.upgradeShards ){
        
        var numShards = this._connections.length
        
        // Upgrade shards
        for( var i = 0; i < numShards; i++ ){
            
            if( this._rs && this._rs[i] ){
                
                // Upgrade replica set
                var rst = this._rs[i].test
                
                rst.upgradeSet( binVersion )
            }
            else {
                
                // Upgrade shard
                var shard = this._connections[i]
                
                MongoRunner.stopMongod( shard )
                
                shard = MongoRunner.runMongod({ restart : shard, 
                                                binVersion : binVersion,
                                                appendOptions : true })
                    
                upgradedSingleShards[ shard.host ] = shard
                
                this[ "shard" + i ] = this[ "d" + i ] = this._connections[i] = shard
            }        
        }
    }
    
    if( options.upgradeConfigs ){
        
        // Upgrade config servers if they aren't already upgraded shards 
        var numConfigs = this._configServers.length
        
        for( var i = 0; i < numConfigs; i++ ){
            
            var configSvr = this._configServers[i]
            
            if( configSvr.host in upgradedSingleShards ){
                
                configSvr = upgradedSingleShards[ configSvr.host ]
            }
            else{
                
                MongoRunner.stopMongod( configSvr )
                
                configSvr = MongoRunner.runMongod({ restart : configSvr, 
                                                    binVersion : binVersion,
                                                    appendOptions : true })
            }
            
            this[ "config" + i ] = this[ "c" + i ] = this._configServers[i] = configSvr
        }
    }
    
}

ShardingTest.prototype.restartMongoses = function() {
    
    var numMongoses = this._mongos.length;
    
    for (var i = 0; i < numMongoses; i++) {
        
        var mongos = this._mongos[i];
        
        MongoRunner.stopMongos(mongos);
        mongos = MongoRunner.runMongos({ restart : mongos })
        
        this[ "s" + i ] = this._mongos[i] = mongos;
        if( i == 0 ) this.s = mongos;
    }
    
    this.config = this.s.getDB( "config" )
    this.admin = this.s.getDB( "admin" )
}

ShardingTest.prototype.getMongosAtVersion = function(binVersion) {
    var mongoses = this._mongos;
    for (var i = 0; i < mongoses.length; i++) {
        try {
            var version = mongoses[i].getDB("admin").runCommand("serverStatus").version;
            if (version.indexOf(binVersion) == 0) {
                return mongoses[i];
            }
        }
        catch (e) {
            printjson(e);
            print(mongoses[i]);
        }
    }
}