Skip to content

Commit 53cb3e1

Browse files
committed
Merge branch 'master' into gdpr
2 parents 7ae2945 + c823104 commit 53cb3e1

File tree

1 file changed

+36
-11
lines changed

1 file changed

+36
-11
lines changed

plugins/pluginManager.js

+36-11
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
var plugins = require('./plugins.json', 'dont-enclose'),
22
pluginsApis = {},
33
mongo = require('mongoskin'),
4+
cluster = require('cluster'),
45
countlyConfig = require('../frontend/express/config', 'dont-enclose'),
56
utils = require('../api/utils/utils.js'),
67
fs = require('fs'),
78
path = require('path'),
9+
url = require('url'),
810
querystring = require('querystring'),
911
cp = require('child_process'),
1012
async = require("async"),
@@ -560,14 +562,25 @@ var pluginManager = function pluginManager(){
560562
};
561563

562564
this.singleDefaultConnection = function() {
563-
var conf = Object.assign({}, countlyConfig.mongodb);
564-
for (var k in conf) {
565-
if (typeof k === 'object') {
566-
conf[k] = Object.assign({}, conf[k]);
565+
if(typeof countlyConfig.mongodb === "string"){
566+
var urlParts = url.parse(countlyConfig.mongodb, true);
567+
if(!urlParts.query){
568+
urlParts.query = {};
567569
}
570+
urlParts.query.maxPoolSize = 1;
571+
delete urlParts.search;
572+
return this.dbConnection({mongodb: url.format(urlParts)});
573+
}
574+
else{
575+
var conf = Object.assign({}, countlyConfig.mongodb);
576+
for (var k in conf) {
577+
if (typeof k === 'object') {
578+
conf[k] = Object.assign({}, conf[k]);
579+
}
580+
}
581+
conf.max_pool_size = 1;
582+
return this.dbConnection({mongodb: conf});
568583
}
569-
conf.max_pool_size = 1;
570-
return this.dbConnection({mongodb: conf});
571584
};
572585

573586
this.getDbConnectionParams = function(config) {
@@ -581,7 +594,7 @@ var pluginManager = function pluginManager(){
581594
config = config || JSON.parse(JSON.stringify(countlyConfig));
582595

583596
if (typeof config.mongodb === 'string') {
584-
dbName = db ? config.mongodb.replace(new RegExp('countly$'), db) : config.mongodb;
597+
dbName = db ? config.mongodb.replace(/\/countly\b/, "/"+db) : config.mongodb;
585598
//remove protocol
586599
dbName = dbName.split("://").pop();
587600
if(dbName.indexOf("@") !== -1){
@@ -651,17 +664,29 @@ var pluginManager = function pluginManager(){
651664
return this.singleDefaultConnection();
652665
}
653666

654-
var db;
667+
var db, maxPoolSize = 10;
668+
if (!cluster.isMaster) {
669+
//we are in worker
670+
maxPoolSize = 500;
671+
}
655672
if(typeof config == "string"){
656673
db = config;
657674
config = JSON.parse(JSON.stringify(countlyConfig));
658675
}
659-
else
676+
else{
660677
config = config || JSON.parse(JSON.stringify(countlyConfig));
678+
}
679+
680+
if(config && typeof config.mongodb == "string"){
681+
var urlParts = url.parse(config.mongodb, true);
682+
if(urlParts && urlParts.query && urlParts.query.maxPoolSize){
683+
maxPoolSize = urlParts.query.maxPoolSize;
684+
}
685+
}
661686

662687
var dbName;
663688
var dbOptions = {
664-
poolSize: config.mongodb.max_pool_size,
689+
poolSize: maxPoolSize,
665690
reconnectInterval: 1000,
666691
reconnectTries:999999999,
667692
autoReconnect:true,
@@ -671,7 +696,7 @@ var pluginManager = function pluginManager(){
671696
socketTimeoutMS: 999999999
672697
};
673698
if (typeof config.mongodb === 'string') {
674-
dbName = db ? config.mongodb.replace(new RegExp('countly$'), db) : config.mongodb;
699+
dbName = db ? config.mongodb.replace(/\/countly\b/, "/"+db) : config.mongodb;
675700
} else{
676701
config.mongodb.db = db || config.mongodb.db || 'countly';
677702
if ( typeof config.mongodb.replSetServers === 'object'){

0 commit comments

Comments
 (0)