code updates for feed support of old and new feeds
diff --git a/app.js b/app.js
index 0f6d776..18a6ddb 100644
--- a/app.js
+++ b/app.js
@@ -8,6 +8,7 @@
var request = require('request');
var bodyParser = require('body-parser');
var logger = require('./Logger');
+var RequestAgent = require('agentkeepalive');
var ProviderUtils = require('./lib/utils.js');
var ProviderHealth = require('./lib/health.js');
@@ -38,6 +39,10 @@
// before deleting the associated trigger
var retriesBeforeDelete = 5;
+// The maxSockets determines how many concurrent sockets the agent can have open per
+// host, is present in an agent by default with value ??.
+var maximumDbConnections = 50;
+
// Allow invoking servers with self-signed certificates.
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
@@ -80,13 +85,17 @@
var nanop = null;
+ var connectionAgent = new RequestAgent({
+ maxSockets: maximumDbConnections
+ });
+
// no need for a promise here, but leaving code inplace until we prove out the question of cookie usage
var promise = new Promise(function(resolve, reject) {
logger.info('url is ' + dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
nanop = require('nano')(dbProtocol + '://' + dbUsername + ':' + dbPassword + '@' + dbHost);
resolve(createDatabase (nanop));
-
+
});
return promise;
diff --git a/lib/health.js b/lib/health.js
index bec14ab..ea417c9 100644
--- a/lib/health.js
+++ b/lib/health.js
@@ -7,5 +7,5 @@
this.health = function (req, res) {
res.send({triggerCount: Object.keys(providerUtils.triggers).length});
};
-
-}
\ No newline at end of file
+
+};
diff --git a/lib/utils.js b/lib/utils.js
index d84ccc3..af24b85 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -1,6 +1,6 @@
var _ = require('lodash');
var request = require('request');
-var Agent = require('agentkeepalive');
+var RequestAgent = require('agentkeepalive');
module.exports = function(
tid,
@@ -38,6 +38,10 @@
var method = 'createTrigger';
+ // The maxSockets determines how many concurrent sockets the agent can have open per
+ // host, is present in an agent by default with value ??.
+ var maximumDbConnections = 50;
+
// Cleanup connection when trigger is deleted.
var sinceToUse = dataTrigger.since ? dataTrigger.since : "now";
var nanoConnection;
@@ -47,21 +51,29 @@
dbProtocol = dataTrigger.protocol;
}
- // this needs to be updated since users might not have cloudant.com in there host name
- if (dataTrigger.host.indexOf('cloudant.com') !== -1) {
- // construct cloudant URL
- dbURL = dbProtocol + '://' + dataTrigger.user + ':' + dataTrigger.pass + '@' + dataTrigger.host;
+ // input["accounturl"] = "https://" + host;
+ // unless specified host will default to accounturl without the https:// in front
+ var dbHost;
+ if (dataTrigger.host) {
+ dbHost = dataTrigger.host;
} else {
- // construct couchDB URL
- dbURL = dbProtocol + '://' + dataTrigger.host;
+ dbHost = dataTrigger.accounturl;
+ dbHost = dbHost.replace('https://','');
}
+ var connectionAgent = new RequestAgent({
+ maxSockets: maximumDbConnections
+ });
+
+ // both couch and cloudant should have their URLs in the username:password@host format
+ dbURL = dbProtocol + '://' + dataTrigger.user + ':' + dataTrigger.pass + '@' + dbHost;
+
// add port if specified
if (dataTrigger.port) {
dbURL = dbURL + ':' + dataTrigger.port;
}
- logger.info(tid, method,'found trigger accounturl: ', dbURL);
+ logger.info(tid, method,'found trigger url: ', dbURL);
nanoConnection = require('nano')(dbURL);
// no need for a promise here, but leaving code inplace until we prove out the question of cookie usage
@@ -258,7 +270,11 @@
var triggerName = dataTrigger.callback.action.name;
var triggerObj = that.parseQName(triggerName);
logger.info(tid, method, 'invokeWhiskAction: change =', change);
+
var form = change.hasOwnProperty('doc') ? change.doc : change;
+ // always store changes
+ //var form = change;
+
logger.info(tid, method, 'invokeWhiskAction: form =', form);
logger.info(tid, method, 'for trigger', id, 'invoking action', triggerName, 'with db update', JSON.stringify(form));