Skip to content

Commit

Permalink
Merge pull request #52 from uber/ringpop-headers
Browse files Browse the repository at this point in the history
Always pass head object when emitting 'request' event
  • Loading branch information
markyen committed Mar 10, 2015
2 parents b916cce + b056c44 commit 670c62e
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 12 deletions.
14 changes: 10 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ var PingReqSender = require('./lib/swim').PingReqSender;
var PingSender = require('./lib/swim').PingSender;
var safeParse = require('./lib/util').safeParse;
var RequestProxy = require('./lib/request-proxy');
var rawHead = require('./lib/request-proxy-util.js').rawHead;
var Suspicion = require('./lib/swim.js').Suspicion;

var HOST_PORT_PATTERN = /^(\d+.\d+.\d+.\d+):\d+$/;
Expand Down Expand Up @@ -849,24 +850,29 @@ RingPop.prototype.handleOrProxyAll =
}

dests.forEach(function(dest) {
var destKeys = keysByDest[dest];
var res = hammock.Response(function(err, resp) {
onResponse(err, resp, dest);
});
if (whoami === dest) {
self.logger.trace('handleOrProxyAll was handled', {
keys: keys,
keys: destKeys,
url: req && req.url,
dest: dest
});
self.emit('request', req, res);
var head = rawHead(req, {
checksum: self.membership.checksum,
keys: destKeys
});
self.emit('request', req, res, head);
} else {
self.logger.trace('handleOrProxyAll was proxied', {
keys: keys,
keys: destKeys,
url: req && req.url,
dest: dest
});
self.proxyReq(_.defaults({
keys: keys,
keys: destKeys,
req: req,
res: res,
dest: dest
Expand Down
13 changes: 9 additions & 4 deletions lib/request-proxy-util.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,22 @@
// THE SOFTWARE.
'use strict';

function serializeHead(req, ringpopOpts) {
return JSON.stringify({
function rawHead(req, ringpopOpts) {
return {
url: req.url,
headers: req.headers,
method: req.method,
httpVersion: req.httpVersion,
ringpopChecksum: ringpopOpts.checksum,
ringpopKeys: ringpopOpts.keys
});
};
}

function strHead(req, ringpopOpts) {
return JSON.stringify(rawHead(req, ringpopOpts));
}

module.exports = {
serializeHead: serializeHead
rawHead: rawHead,
strHead: strHead
};
4 changes: 2 additions & 2 deletions lib/request-proxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ var hammock = require('uber-hammock');
var TypedError = require('error/typed');

var safeParse = require('./util').safeParse;
var serializeHead = require('./request-proxy-util.js').serializeHead;
var strHead = require('./request-proxy-util.js').strHead;

var RETRY_SCHEDULE = [0, 1, 3.5];

Expand Down Expand Up @@ -110,7 +110,7 @@ proto.proxyReq = function proxyReq(opts) {
host: dest,
timeout: timeout
};
var head = serializeHead(req, {
var head = strHead(req, {
checksum: ringpop.membership.checksum,
keys: keys
});
Expand Down
4 changes: 2 additions & 2 deletions test/integration/proxy_req_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ var after = require('after');
var test = require('tape');

var allocCluster = require('../lib/alloc-cluster.js');
var serializeHead = require('../../lib/request-proxy-util.js').serializeHead;
var strHead = require('../../lib/request-proxy-util.js').strHead;

var retrySchedule = [0, 0.01, 0.02];

Expand Down Expand Up @@ -324,7 +324,7 @@ test('overrides /proxy/req endpoint', function t(assert) {
assert.end();
});

var head = serializeHead(request, {
var head = strHead(request, {
checksum: cluster.two.membership.checksum,
keys: [cluster.keys.two]
});
Expand Down

0 comments on commit 670c62e

Please sign in to comment.