UNPKG

cloudcms-cli

Version:
96 lines (84 loc) 3.31 kB
var helper = require("../../../helper"); var AbstractCommand = require("../../abstract"); class GetClusterThreadDumpCommand extends AbstractCommand { constructor() { super({ "group": "admin", "name": "get-cluster-threaddump", "description": "Retrieves thread dump information for members of a cluster", "schema": { "properties": [{ "name": "http", "type": "boolean", "description": "Filter to include active http handler threads", "required": false, "default": false, "args": ["http"] }, { "name": "worker", "type": "boolean", "description": "Filter to include job processing worker threads", "required": false, "default": false, "args": ["worker"] }, { "name": "username", "type": "string", "description": "Admin username", "required": true, "args": ["username", "u"] }, { "name": "password", "type": "string", "description": "Admin password", "required": true, "hidden": true, "args": ["password", "p"] }] } }); } handle(options, callback) { helper._handleAdminGitanaGet("/cluster/diag/threaddump", {}, options.username, options.password, function(err, jsonResponse) { if (options.http || options.worker) { var servers = jsonResponse.servers; for (var serverKey in servers) { var server = servers[serverKey]; var threadNamesToRemove = []; for (var threadName in server) { var thread = server[threadName]; var keep = false; if (options.http && threadName.startsWith("http-nio-")) { var stackTraceText = thread.stacktrace.join("\n"); if (stackTraceText.indexOf("org.gitana.platform.servlet.APIDispatcherServlet") > -1) { keep = true; } } if (options.worker && threadName.startsWith("job-thread-")) { keep = true; } if (!keep) { threadNamesToRemove.push(threadName); } } for (var i = 0; i < threadNamesToRemove.length; i++) { delete server[threadNamesToRemove[i]]; } } } helper._handleJsonResponse(err, jsonResponse, callback); }); } } module.exports = GetClusterThreadDumpCommand;