Skip to content

Commit

Permalink
Add syncIndexes to all models JIC (#1750)
Browse files Browse the repository at this point in the history
* Possible recommendation as `expires` alias to `expireAfterSeconds` may need this to properly set values of an index that is created app side to sync with back-end.
* Increase event `emitter.setMaxListeners` to accommodate additional MongoDB usage with error thrown:

``` console
Index event triggered/trapped for User model
Index event triggered/trapped for Discussion model
Index event triggered/trapped for Strategy model
Index event triggered/trapped for Remove model
Index event triggered/trapped for Comment model
Index event triggered/trapped for Group model
Index event triggered/trapped for Flag model
Index event triggered/trapped for Vote model
(node:10567) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 open listeners added to [NativeConnection]. Use emitter.setMaxListeners() to increase limit
```

Applies to #1744 #1730 and followup for #1516 ... followup needed on mLab for index that's already there *(which I didn't put there)*

Auto-merge
  • Loading branch information
Martii committed Sep 6, 2020
1 parent 491699c commit 51becf5
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 0 deletions.
3 changes: 3 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ var chain = require('./libs/debug').chain;
var path = require('path');
var crypto = require('crypto');

var events = require('events');
events.EventEmitter.defaultMaxListeners = 15;

var express = require('express');
var toobusy = require('toobusy-js');
var statusCodePage = require('./libs/templateHelpers').statusCodePage;
Expand Down
16 changes: 16 additions & 0 deletions models/comment.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,20 @@ var commentSchema = new Schema({

var Comment = mongoose.model('Comment', commentSchema);

Comment.syncIndexes(function () {
Comment.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Comment indexes:\n', aIndexes);
}).catch(console.error);
});

Comment.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Comment model');
}
});

exports.Comment = Comment;
16 changes: 16 additions & 0 deletions models/discussion.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,20 @@ var discussionSchema = new Schema({

var Discussion = mongoose.model('Discussion', discussionSchema);

Discussion.syncIndexes(function () {
Discussion.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Discussion indexes:\n', aIndexes);
}).catch(console.error);
});

Discussion.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Discussion model');
}
});

exports.Discussion = Discussion;
16 changes: 16 additions & 0 deletions models/flag.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,20 @@ var flagSchema = new Schema({

var Flag = mongoose.model('Flag', flagSchema);

Flag.syncIndexes(function () {
Flag.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Flag indexes:\n', aIndexes);
}).catch(console.error);
});

Flag.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Flag model');
}
});

exports.Flag = Flag;
16 changes: 16 additions & 0 deletions models/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,20 @@ var groupSchema = new Schema({

var Group = mongoose.model('Group', groupSchema);

Group.syncIndexes(function () {
Group.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Group indexes:\n', aIndexes);
}).catch(console.error);
});

Group.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Group model');
}
});

exports.Group = Group;
16 changes: 16 additions & 0 deletions models/remove.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,20 @@ var removeSchema = new Schema({

var Remove = mongoose.model('Remove', removeSchema);

Remove.syncIndexes(function () {
Remove.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Remove indexes:\n', aIndexes);
}).catch(console.error);
});

Remove.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Remove model');
}
});

exports.Remove = Remove;
16 changes: 16 additions & 0 deletions models/strategy.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,20 @@ var strategySchema = new Schema({

var Strategy = mongoose.model('Strategy', strategySchema);

Strategy.syncIndexes(function () {
Strategy.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Strategy indexes:\n', aIndexes);
}).catch(console.error);
});

Strategy.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Strategy model');
}
});

exports.Strategy = Strategy;
16 changes: 16 additions & 0 deletions models/sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,20 @@ var syncSchema = new Schema({

var Sync = mongoose.model('Sync', syncSchema);

Sync.syncIndexes(function () {
Sync.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Sync indexes:\n', aIndexes);
}).catch(console.error);
});

Sync.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Sync model');
}
});

exports.Sync = Sync;
16 changes: 16 additions & 0 deletions models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,21 @@ var userSchema = new Schema({

var User = mongoose.model('User', userSchema);

User.syncIndexes(function () {
User.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('User indexes:\n', aIndexes);
}).catch(console.error);
});

User.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for User model');
}
});

exports.User = User;

16 changes: 16 additions & 0 deletions models/vote.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,20 @@ var voteSchema = new Schema({

var Vote = mongoose.model('Vote', voteSchema);

Vote.syncIndexes(function () {
Vote.collection.getIndexes({
full: true
}).then(function(aIndexes) {
console.log('Vote indexes:\n', aIndexes);
}).catch(console.error);
});

Vote.on('index', function (aErr) {
if (aErr) {
console.error(aErr);
} else {
console.log('Index event triggered/trapped for Vote model');
}
});

exports.Vote = Vote;

0 comments on commit 51becf5

Please sign in to comment.