From 84bcded77e9a42d3762146802418a1ae1ece8c30 Mon Sep 17 00:00:00 2001 From: Peter Marton Date: Tue, 15 May 2018 07:52:46 -0700 Subject: [PATCH] fix(dtrace): route probes (#1659) --- lib/router.js | 60 --------------------------------------------------- lib/server.js | 28 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 60 deletions(-) diff --git a/lib/router.js b/lib/router.js index ed8945639..10c4a2dd9 100644 --- a/lib/router.js +++ b/lib/router.js @@ -11,7 +11,6 @@ var uuid = require('uuid'); var Chain = require('./chain'); var RouterRegistryRadix = require('./routerRegistryRadix'); -var dtrace = require('./dtrace'); ///--- Globals @@ -71,13 +70,10 @@ util.inherits(Router, EventEmitter); * @returns {Chain|undefined} handler or undefined */ Router.prototype.lookup = function lookup(req, res) { - var self = this; var pathname = req.getUrl().pathname; // Find route - self._dtraceStart(req); var registryRoute = this._registry.lookup(req.method, pathname); - self._dtraceEnd(req, res); // Not found if (!registryRoute) { @@ -324,60 +320,4 @@ Router.prototype._getRouteName = function _getRouteName(name, method, path) { return name; }; -/** - * Setup request and calls _onRequest to run middlewares and call router - * - * @private - * @memberof Router - * @instance - * @function _dtraceStart - * @param {Request} req - the request object - * @returns {undefined} no return value - * @fires Request,Response#request - */ -Router.prototype._dtraceStart = function _dtraceStart(req) { - if (!req.dtrace) { - return; - } - - dtrace._rstfy_probes['route-start'].fire(function fire() { - return [ - req.serverName, - req.route.name, - req._dtraceId, - req.method, - req.href(), - req.headers - ]; - }); -}; - -/** - * Setup request and calls _onRequest to run middlewares and call router - * - * @private - * @memberof Router - * @instance - * @function _dtraceEnd - * @param {Request} req - the request object - * @param {Response} res - the response object - * @returns {undefined} no return value - * @fires Request,Response#request - */ -Router.prototype._dtraceEnd = function _dtraceEnd(req, res) { - if (!req.dtrace) { - return; - } - - dtrace._rstfy_probes['route-done'].fire(function fire() { - return [ - req.serverName, - req.route.name, - req._dtraceId, - res.statusCode || 200, - res.headers() - ]; - }); -}; - module.exports = Router; diff --git a/lib/server.js b/lib/server.js index 2ee202556..5b7d9dc5d 100644 --- a/lib/server.js +++ b/lib/server.js @@ -914,10 +914,38 @@ Server.prototype._runRoute = function _runRoute(req, res) { self.emit('routed', req, res, req.route); self._runUse(req, res, function afterUse() { + // DTrace + if (self.dtrace) { + dtrace._rstfy_probes['route-start'].fire(function fire() { + return [ + self.name, + req.route.name, + req._dtraceId, + req.method, + req.href(), + req.headers + ]; + }); + } + req._timeRouteStart = process.hrtime(); routeHandler(req, res, function afterRouter(err) { // Execution time of a handler with error can be significantly lower req._timeRouteEnd = process.hrtime(); + + // DTrace + if (self.dtrace) { + dtrace._rstfy_probes['route-done'].fire(function fire() { + return [ + self.name, + req.route.name, + req._dtraceId, + res.statusCode || 200, + res.headers + ]; + }); + } + self._afterRoute(err, req, res); }); });