diff --git a/modules/nodejs-agent/lib/plugins/http/http.js b/modules/nodejs-agent/lib/plugins/http/http.js index 9565515..9d205d9 100644 --- a/modules/nodejs-agent/lib/plugins/http/http.js +++ b/modules/nodejs-agent/lib/plugins/http/http.js @@ -37,6 +37,19 @@ module.exports = function(httpModule, instrumentation, contextManager) { return httpModule; + /** + * filterParams + * @param {endpointName} endpointName + * @return {*} + */ + function filterParams(endpointName) { + if (endpointName && endpointName.indexOf("?") > -1) { + // filter params + return endpointName.split("?")[0]; + } + return endpointName; + } + /** * * @param {original} original @@ -53,7 +66,7 @@ module.exports = function(httpModule, instrumentation, contextManager) { return undefined; }); - let span = contextManager.createEntrySpan(req.url, contextCarrier); + let span = contextManager.createEntrySpan(filterParams(req.url), contextCarrier); span.component(componentDefine.Components.HTTP); span.spanLayer(layerDefine.Layers.HTTP); onFinished(res, function(err) { @@ -81,7 +94,7 @@ module.exports = function(httpModule, instrumentation, contextManager) { function wrapRequest(original) { return function(options, callback) { let contextCarrier = new ContextCarrier(); - let span = contextManager.createExitSpan(options.path, options.host + ":" + options.port, contextCarrier); + let span = contextManager.createExitSpan(options.pathname, options.host + ":" + options.port, contextCarrier); contextCarrier.pushBy(function(key, value) { if (!options.hasOwnProperty("headers")) { options.headers = {}; diff --git a/modules/nodejs-agent/lib/require-module-hook.js b/modules/nodejs-agent/lib/require-module-hook.js index 88c9b84..8069a53 100644 --- a/modules/nodejs-agent/lib/require-module-hook.js +++ b/modules/nodejs-agent/lib/require-module-hook.js @@ -33,6 +33,7 @@ module.exports = hook; function hook(modules, requireCallback) { const enhancedModuleCache = {}; const _origRequire = Module.prototype.require; + let progressingHookFiles = {}; Module.prototype.require = function(request) { let filename = Module._resolveFilename(request, this); let core = filename.indexOf(path.sep) === -1; @@ -45,7 +46,17 @@ function hook(modules, requireCallback) { return enhancedModuleCache[filename]; } + // check current module is in progressing, + // if yes, ignore it + let progressing = progressingHookFiles[filename]; + if (!progressing) { + progressingHookFiles[filename] = true; + } + let exports = _origRequire.apply(this, arguments); + if (progressing) return exports; + delete progressingHookFiles[filename]; + if (core) { moduleName = filename; enhanceFile = filename; diff --git a/modules/nodejs-agent/lib/services/register-service.js b/modules/nodejs-agent/lib/services/register-service.js index 25c5185..87c30e9 100644 --- a/modules/nodejs-agent/lib/services/register-service.js +++ b/modules/nodejs-agent/lib/services/register-service.js @@ -63,7 +63,7 @@ RegisterService.prototype.launch = function() { os_name: os.platform(), host_name: os.hostname(), process_no: process.pid + "", - language: "Node.js", + language: "nodejs", ipV4s: getAllIPv4Address(), }, instanceUUID: function() { diff --git a/modules/nodejs-agent/lib/trace/trace-segment-id.js b/modules/nodejs-agent/lib/trace/trace-segment-id.js index 46009ee..a659743 100644 --- a/modules/nodejs-agent/lib/trace/trace-segment-id.js +++ b/modules/nodejs-agent/lib/trace/trace-segment-id.js @@ -20,6 +20,7 @@ module.exports = ID; const AgentConfig = require("../config"); const process = require("process"); +const randomize = require("randomatic"); /** * @param {idParts} idParts @@ -33,10 +34,9 @@ function ID(idParts) { this._part3 = idParts.part3; } else { this._part1 = AgentConfig.getInstanceId(); - this._part2 = process.pid * - process.ppid ? process.ppid : (((1 + Math.random()) * 0x10000) | 0) - + (((1 + Math.random()) * 0x10000) | 0); - this._part3 = Number(process.hrtime().join("")); + this._part2 = (process.pid * process.ppid ? process.ppid : (((1 + Math.random()) * 0x10000) | 0) + + (((1 + Math.random()) * 0x10000) | 0)) + Number(randomize("0", 5)); + this._part3 = Number(process.hrtime().join("")) + Number(randomize("0", 9)); } } diff --git a/modules/nodejs-agent/lib/utils/index.js b/modules/nodejs-agent/lib/utils/index.js index 3674ba0..a1b56ef 100644 --- a/modules/nodejs-agent/lib/utils/index.js +++ b/modules/nodejs-agent/lib/utils/index.js @@ -37,7 +37,7 @@ Utils.prototype.compare = function(x, y) { if (!Object.equals(x[p], y[p])) return false; } - for (p in y) { + for (let p in y) { if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) return false; } diff --git a/modules/nodejs-agent/package.json b/modules/nodejs-agent/package.json index d58dd94..5693e24 100644 --- a/modules/nodejs-agent/package.json +++ b/modules/nodejs-agent/package.json @@ -41,11 +41,13 @@ "js-base64": "^2.5.1", "object-hash": "^1.3.1", "on-finished": "^2.3.0", + "randomatic": "^3.1.1", "resolve": "^1.8.1", "semver": "^5.5.1", "uuid": "^3.2.1" }, "devDependencies": { + "cz-conventional-changelog": "^2.1.0", "eslint": "^4.19.1", "eslint-config-google": "^0.9.1", "eslint-plugin-header": "^1.2.0", @@ -58,5 +60,10 @@ "lib/network/common/*.js", "lib/network/language-agent-v2/*.js", "lib/network/register/*.js" - ] + ], + "config": { + "commitizen": { + "path": "./node_modules/cz-conventional-changelog" + } + } }