Handle db connection error during follow (#119)
diff --git a/provider/lib/utils.js b/provider/lib/utils.js
index 06d9d4d..38d9c1f 100644
--- a/provider/lib/utils.js
+++ b/provider/lib/utils.js
@@ -309,34 +309,49 @@
this.setupFollow = function(seq) {
var method = 'setupFollow';
- var feed = triggerDB.follow({ since: seq, include_docs: true, filter: ddname + '/' + filter, query_params: { worker: utils.worker } });
+ try {
+ var feed = triggerDB.follow({
+ since: seq,
+ include_docs: true,
+ filter: ddname + '/' + filter,
+ query_params: {worker: utils.worker}
+ });
- feed.on('change', (change) => {
- var triggerIdentifier = change.id;
- var doc = change.doc;
+ feed.on('change', (change) => {
+ var triggerIdentifier = change.id;
+ var doc = change.doc;
- logger.info(method, 'got change for trigger', triggerIdentifier);
+ logger.info(method, 'got change for trigger', triggerIdentifier);
- if (utils.triggers[triggerIdentifier]) {
- if (doc.status && doc.status.active === false) {
- utils.deleteTrigger(triggerIdentifier);
+ if (utils.triggers[triggerIdentifier]) {
+ if (doc.status && doc.status.active === false) {
+ utils.deleteTrigger(triggerIdentifier);
+ }
}
- }
- else {
- //ignore changes to disabled triggers
- if (!doc.status || doc.status.active === true) {
- utils.createTrigger(utils.initTrigger(doc))
- .then(triggerIdentifier => {
- logger.info(method, triggerIdentifier, 'created successfully');
- }).catch(err => {
- var message = 'Automatically disabled after receiving exception on create trigger: ' + err;
- utils.disableTrigger(triggerIdentifier, undefined, message);
- logger.error(method, 'Disabled trigger', triggerIdentifier, 'due to exception:', err);
- });
+ else {
+ //ignore changes to disabled triggers
+ if (!doc.status || doc.status.active === true) {
+ utils.createTrigger(utils.initTrigger(doc))
+ .then(triggerIdentifier => {
+ logger.info(method, triggerIdentifier, 'created successfully');
+ }).catch(err => {
+ var message = 'Automatically disabled after receiving exception on create trigger: ' + err;
+ utils.disableTrigger(triggerIdentifier, undefined, message);
+ logger.error(method, 'Disabled trigger', triggerIdentifier, 'due to exception:', err);
+ });
+ }
}
- }
- });
- feed.follow();
+ });
+
+ feed.on('error', function (err) {
+ logger.error(method, err);
+ });
+
+ feed.follow();
+ }
+ catch (err) {
+ logger.error(method, err);
+ }
};
this.authorize = function(req, res, next) {
@@ -423,11 +438,11 @@
redisClient.hgetAsync(utils.redisHash, utils.redisKey)
.then(activeHost => {
return utils.initActiveHost(activeHost);
- })
- .then(resolve)
- .catch(err => {
- reject(err);
- });
+ })
+ .then(resolve)
+ .catch(err => {
+ reject(err);
+ });
}
else {
resolve();