Skip to content

Commit 2d280fe

Browse files
committed
[Binary][Backend/MySQL/MongoDB] Optimized the db binary command and also improved all backend adapters to gracefully close all opened connections. Problems which caused non-endindig db-command run were fixed.
1 parent af6209a commit 2d280fe

File tree

4 files changed

+52
-59
lines changed

4 files changed

+52
-59
lines changed

bin/command/db.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,7 @@ exports.run = function(opts)
6767
if (0 === opts.argv.length) {
6868

6969
if (0 === configs.namespaces.length) {
70-
71-
console.log('No database configurations found.');
72-
return;
70+
return console.log('No database configurations found.');
7371
}
7472

7573
configs.namespaces.forEach(function(namespace) {
@@ -169,8 +167,10 @@ exports.run = function(opts)
169167

170168
if (err) {
171169
console.log(err);
172-
return;
170+
return process.exit(1);
173171
}
172+
173+
return process.exit(0);
174174
});
175175
};
176176

bin/greppy

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ require('./../lib/extension/datatype/array');
2626
require('./../lib/extension/datatype/number');
2727
require('./../lib/extension/datatype/string');
2828

29+
// Unlimit process EventEmitter listeners to
30+
// avoid warnings for this console application
31+
process.setMaxListeners(0);
32+
2933
// Create a default table
3034
table = new Table.TableOutputStream({
3135
omitHeader: true,

lib/db/adapter/mongodb.js

Lines changed: 33 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var MongoDB = function(name, config)
2525
this.name = name;
2626

2727
this.connection = undefined;
28-
this.orm = {
28+
this.orm = {
2929
instance : undefined,
3030
models : {}
3131
};
@@ -159,11 +159,7 @@ MongoDB.prototype.configure = function(callback)
159159

160160
// The plain connection only
161161
if (this.config.plain) {
162-
163-
setupPlain(function(err, instance) {
164-
callback && callback(err, instance);
165-
});
166-
return;
162+
return setupPlain(callback);
167163
}
168164

169165
// The ORM only
@@ -221,7 +217,6 @@ MongoDB.prototype.create = function(callback)
221217
this.configure.call(this, function(err, db) {
222218

223219
if (err) {
224-
self.close();
225220
return callback && callback(err);
226221
}
227222

@@ -236,8 +231,9 @@ MongoDB.prototype.create = function(callback)
236231
collection.drop(function(err) {
237232

238233
if (err) {
239-
self.close();
240-
return callback && callback(err);
234+
return self.close(function() {
235+
callback && callback(err);
236+
});
241237
}
242238

243239
self.close(callback);
@@ -262,16 +258,16 @@ MongoDB.prototype.drop = function(callback)
262258
this.configure.call(this, function(err, db) {
263259

264260
if (err) {
265-
self.close();
266261
return callback && callback(err);
267262
}
268263

269264
// Do the deletion of the database
270265
db.dropDatabase(function(err) {
271266

272267
if (err) {
273-
self.close();
274-
return callback && callback(err);
268+
return self.close(function() {
269+
callback && callback(err);
270+
});
275271
}
276272

277273
self.close(callback);
@@ -295,7 +291,6 @@ MongoDB.prototype.migrate = function(callback)
295291
this.configure.call(this, function(err, db, orm) {
296292

297293
if (err) {
298-
self.close();
299294
return callback && callback(err);
300295
}
301296

@@ -308,8 +303,9 @@ MongoDB.prototype.migrate = function(callback)
308303
}, function(err) {
309304

310305
if (err) {
311-
self.close();
312-
return callback && callback(err);
306+
return self.close(function() {
307+
callback && callback(err);
308+
});
313309
}
314310

315311
var migrations = (new (require('../../helper/project'))()).listMigrationsForConnection(
@@ -351,8 +347,9 @@ MongoDB.prototype.migrate = function(callback)
351347
});
352348

353349
}, function(err) {
354-
self.close();
355-
return callback && callback(err);
350+
return self.close(function() {
351+
callback && callback(err);
352+
});
356353
});
357354
});
358355
});
@@ -374,7 +371,6 @@ MongoDB.prototype.fill = function(callback)
374371
this.configure.call(this, function(err) {
375372

376373
if (err) {
377-
self.close();
378374
return callback && callback(err);
379375
}
380376

@@ -384,8 +380,7 @@ MongoDB.prototype.fill = function(callback)
384380

385381
// No fixtures found for the current connection
386382
if (0 === fixtures.fixtures.length) {
387-
self.close();
388-
return callback && callback();
383+
return self.close(callback);
389384
}
390385

391386
global.fs = require('fs');
@@ -414,8 +409,9 @@ MongoDB.prototype.fill = function(callback)
414409
);
415410

416411
}, function(err) {
417-
self.close();
418-
return callback && callback(err);
412+
return self.close(function() {
413+
callback && callback(err);
414+
});
419415
});
420416
});
421417
}
@@ -439,8 +435,9 @@ MongoDB.prototype.clear = function(callback)
439435
collection.remove({}, {fsync: true}, function(err) {
440436

441437
if (err) {
442-
self.close();
443-
return callback && callback(err);
438+
return self.close(function() {
439+
callback && callback(err);
440+
});
444441
}
445442

446443
callback && callback();
@@ -469,8 +466,9 @@ MongoDB.prototype.purge = function(callback)
469466
collection.drop(function(err) {
470467

471468
if (err) {
472-
self.close();
473-
return callback && callback(err);
469+
return self.close(function() {
470+
callback && callback(err);
471+
});
474472
}
475473

476474
callback && callback();
@@ -496,22 +494,23 @@ managementHelper.runOnAllCollections = function(iterator, callback)
496494
this.configure.call(this, function(err, db) {
497495

498496
if (err) {
499-
self.close();
500497
return callback && callback(err);
501498
}
502499

503500
db.collections(function(err, collections) {
504501

505502
if (err) {
506-
self.close();
507-
return callback && callback(err);
503+
return self.close(function() {
504+
callback && callback(err);
505+
});
508506
}
509507

510508
async.each(collections, function(collection, callback) {
511509

512510
if (err) {
513-
self.close();
514-
return callback && callback(err);
511+
return self.close(function() {
512+
callback && callback(err);
513+
});
515514
}
516515

517516
if (/^system./i.test(collection.collectionName)) {
@@ -522,11 +521,9 @@ managementHelper.runOnAllCollections = function(iterator, callback)
522521

523522
}, function(err) {
524523

525-
if (err) {
526-
return callback && callback(err);
527-
}
528-
529-
self.close(callback);
524+
return self.close(function() {
525+
callback && callback(err);
526+
});
530527
});
531528
});
532529
});

lib/db/adapter/mysql.js

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -261,17 +261,14 @@ MySQL.prototype.close = function(callback)
261261

262262
// The plain connection only
263263
if (this.config.plain) {
264-
265-
this.pool.end(callback);
266-
return;
264+
return this.pool.end(callback);
267265
}
268266

269267
// The ORM only
270268
if (this.config.orm) {
271269

272270
this.orm.instance.connectorManager.disconnect();
273-
callback && callback();
274-
return;
271+
return callback && callback();
275272
}
276273
}
277274

@@ -298,7 +295,6 @@ MySQL.prototype.create = function(callback)
298295
self.config.db = dbName;
299296

300297
if (err) {
301-
self.close();
302298
return callback && callback(err);
303299
}
304300

@@ -328,7 +324,7 @@ MySQL.prototype.drop = function(callback)
328324
this.config.plain = false;
329325

330326
// If we specify no db name we connect global
331-
this.config.db = '';
327+
this.config.db = '';
332328

333329
// Bootstrap the connection
334330
this.configure.call(this, function(err) {
@@ -337,7 +333,6 @@ MySQL.prototype.drop = function(callback)
337333
self.config.db = dbName;
338334

339335
if (err) {
340-
self.close();
341336
return callback && callback(err);
342337
}
343338

@@ -369,7 +364,6 @@ MySQL.prototype.migrate = function(callback)
369364
this.configure.call(this, function(err) {
370365

371366
if (err) {
372-
self.close();
373367
return callback && callback(err);
374368
}
375369

@@ -406,7 +400,6 @@ MySQL.prototype.fill = function(callback)
406400
this.configure.call(this, function(err) {
407401

408402
if (err) {
409-
self.close();
410403
return callback && callback(err);
411404
}
412405

@@ -416,7 +409,7 @@ MySQL.prototype.fill = function(callback)
416409

417410
// No fixtures found for the current connection
418411
if (0 === fixtures.fixtures.length) {
419-
return callback && callback();
412+
return self.close(callback);
420413
}
421414

422415
global.fs = require('fs');
@@ -445,8 +438,10 @@ MySQL.prototype.fill = function(callback)
445438
);
446439

447440
}, function(err) {
448-
self.close();
449-
return callback && callback(err);
441+
442+
return self.close(function() {
443+
callback && callback(err);
444+
});
450445
});
451446
});
452447
}
@@ -495,7 +490,6 @@ managementHelper.runOnAllTables = function(command, callback)
495490
this.configure.call(this, function(err, db, orm) {
496491

497492
if (err) {
498-
self.close();
499493
return callback && callback(err);
500494
}
501495

@@ -513,11 +507,9 @@ managementHelper.runOnAllTables = function(command, callback)
513507

514508
}, function(err) {
515509

516-
if (err) {
517-
return callback && callback(err);
518-
}
519-
520-
callback && callback();
510+
return self.close(function() {
511+
callback && callback(err);
512+
});
521513
});
522514
});
523515
}

0 commit comments

Comments
 (0)