@resolveio/server-lib 12.4.19 → 12.4.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -225,16 +225,20 @@ var MonitorManager = /** @class */ (function () {
225
225
  };
226
226
  MonitorManager.prototype.setupEventLoop = function () {
227
227
  var _this = this;
228
- setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
229
- var monitorData, size, e_2, tmpData, i, e_3, e_4;
228
+ setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
229
+ var monitorData, e_2;
230
230
  return __generator(this, function (_a) {
231
231
  switch (_a.label) {
232
232
  case 0:
233
- if (!this._monitorData.length) return [3 /*break*/, 15];
234
- monitorData = common_1.deepCopy(this._monitorData);
235
- this._monitorData = [];
236
- size = JSON.stringify(monitorData).replace(/[\[\]\,\"]/g, '').length * 8;
237
- if (!(size < 45000000)) return [3 /*break*/, 5];
233
+ if (!this._monitorData.length) return [3 /*break*/, 4];
234
+ monitorData = [];
235
+ if (this._monitorData.length > 10) {
236
+ monitorData = this._monitorData.splice(0, 10);
237
+ }
238
+ else {
239
+ monitorData = common_1.deepCopy(this._monitorData);
240
+ this._monitorData = [];
241
+ }
238
242
  _a.label = 1;
239
243
  case 1:
240
244
  _a.trys.push([1, 3, , 4]);
@@ -245,49 +249,10 @@ var MonitorManager = /** @class */ (function () {
245
249
  case 3:
246
250
  e_2 = _a.sent();
247
251
  return [3 /*break*/, 4];
248
- case 4: return [3 /*break*/, 15];
249
- case 5:
250
- tmpData = [];
251
- i = 0;
252
- _a.label = 6;
253
- case 6:
254
- if (!(i < monitorData.length)) return [3 /*break*/, 11];
255
- tmpData.push(monitorData[i]);
256
- size = JSON.stringify(tmpData).replace(/[\[\]\,\"]/g, '').length * 8;
257
- if (!(size > 45000000)) return [3 /*break*/, 10];
258
- tmpData.pop();
259
- _a.label = 7;
260
- case 7:
261
- _a.trys.push([7, 9, , 10]);
262
- return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/monitor', tmpData)];
263
- case 8:
264
- _a.sent();
265
- tmpData = [monitorData[i]];
266
- return [3 /*break*/, 10];
267
- case 9:
268
- e_3 = _a.sent();
269
- return [3 /*break*/, 10];
270
- case 10:
271
- i++;
272
- return [3 /*break*/, 6];
273
- case 11:
274
- if (!tmpData.length) return [3 /*break*/, 15];
275
- _a.label = 12;
276
- case 12:
277
- _a.trys.push([12, 14, , 15]);
278
- return [4 /*yield*/, axios_1.default.post('https://backend.resolveio.com/api/monitor', tmpData)];
279
- case 13:
280
- _a.sent();
281
- return [3 /*break*/, 15];
282
- case 14:
283
- e_4 = _a.sent();
284
- return [3 /*break*/, 15];
285
- case 15:
286
- this.setupEventLoop();
287
- return [2 /*return*/];
252
+ case 4: return [2 /*return*/];
288
253
  }
289
254
  });
290
- }); }, 60000);
255
+ }); }, 1000);
291
256
  };
292
257
  return MonitorManager;
293
258
  }());
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import ResolveIOMainServer from '../server-app';\nimport axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../index';\nimport { deepCopy } from '../util/common';\nimport { objectIdHexString } from './mongo.manager';\nconst os = require('os');\n\nexport class MonitorManager {\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _serverConfig;\n\tprivate _instanceHostname = '';\n\tprivate _monitorData = [];\n\n\tconstructor(mainServer, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\t//Create function to get CPU information\n\tcpuAverage() {\n\t\t//Initialise sum of idle and time of cores and fetch CPU info\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\t\n\t\t//Loop through CPU cores\n\t\tfor(var i = 0, len = cpus.length; i < len; i++) {\n\t\t\t//Select CPU core\n\t\t\tvar cpu = cpus[i];\n\t\t\n\t\t\t//Total up the time in the cores tick\n\t\t\tfor(let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\n\t\t\t//Total up the idle time of the core\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\t\n\t\t//Return the average Idle and Tick times\n\t\treturn {idle: totalIdle / cpus.length, total: totalTick / cpus.length};\n\t}\n\n\tasync setupIntervals() {\n\t\tif (this._serverConfig['ROOT_URL'] !== 'https://resolveio.com' && this._serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\ttry {\n\t\t\t\tlet instanceId = await axios.get('http://169.254.169.254/latest/meta-data/instance-id');\n\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/health', {\n\t\t\t\t\t\t\ttype: 'application',\n\t\t\t\t\t\t\tid_aws_instance: instanceId.data,\n\t\t\t\t\t\t\tversion: typeof process.env.APP_VERSION === 'number' ? (<any>process.env.APP_VERSION).toString() : process.env.APP_VERSION,\n\t\t\t\t\t\t\tversion_key: process.env.APP_VERSION_KEY\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch(errHealth) {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\t\t\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\n\t\t\t//Grab second Measure\n\t\t\tvar endMeasure = this.cpuAverage(); \n\n\t\t\t//Calculate the difference in idle and total time between the measures\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\n\t\t\t//Calculate the average percentage CPU usage\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\t\t\t\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0],\n\t\t\t\t\ttype: 'cpu'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlastCPU = endMeasure;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem()\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\ttype: 'memory'\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\t\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\ttype: 'mongo'\n\t\t\t\t});\n\t\t\t}\n\t\t}\t\n\t}\n\n\tsetupEventLoop() {\n\t\tsetTimeout(async () => {\n\t\t\tif (this._monitorData.length) {\n\t\t\t\tlet monitorData = deepCopy(this._monitorData);\n\t\t\t\tthis._monitorData = [];\n\n\t\t\t\tlet size = JSON.stringify(monitorData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\tif (size < 45000000) { // 50 MB size limit\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', monitorData);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet tmpData = [];\n\t\t\t\t\tfor (let i = 0; i < monitorData.length; i++) {\n\t\t\t\t\t\ttmpData.push(monitorData[i]);\n\t\t\t\t\t\tsize = JSON.stringify(tmpData).replace(/[\\[\\]\\,\\\"]/g,'').length * 8;\n\n\t\t\t\t\t\tif (size > 45000000) {\n\t\t\t\t\t\t\ttmpData.pop();\n\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', tmpData);\n\n\t\t\t\t\t\t\t\ttmpData = [monitorData[i]];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch (e) {}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (tmpData.length) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', tmpData);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.setupEventLoop();\n\t\t}, 60000);\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date, \n\tmethod: string,\n\tcollection: string,\n\tduration: number,\n\tquery: string\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompletedWS: {\n\t\t[id_socket: string]: MonitorFunction;\n\t} = {};\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstartMonitorFunction(functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any) {\n\t\tlet newMonitorFunction = new MonitorFunction(this._functionCnt++, functionType, functionName, user, id_socket, data);\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tfinishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.filter(a => a.id === id)[0];\n\t\tif (monitor) {\n\t\t\tmonitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functionLastCompletedWS[monitor.id_socket] = monitor;\n\t\t\tthis._functions.splice(this._functions.map(a => a.id).indexOf(id), 1);\n\t\t}\n\t}\n\n\tgetActiveMonitorFunctions() {\n\t\treturn this._functions;\n\t}\n\n\tgetLastCompletedMonitorFunction() {\n\t\treturn this._functionLastCompleted;\n\t}\n\t\n\tgetLastCompletedMonitorFunctionWS() {\n\t\treturn this._functionLastCompletedWS;\n\t}\n}\n\nexport type MonitorFunctionType = 'Cron Method' | 'Internal Method' | 'Method' | 'User Specific Publication' | 'Publication';\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _maxDiff = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic lastTime: Date = null;\n\tpublic id_socket = '';\n\tpublic id = 0;\n\n\tconstructor(id: number, functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any) {\n\t\tthis.id = id;\n\t\tthis.startTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis.id_socket = id_socket;\n\t\tthis._data = data;\n\t\tthis.lastTime = new Date();\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = Date.now() - this.lastTime.getTime();\n\t\t\tif (diff > this._maxDiff) {\n\t\t\t\tthis._maxDiff = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tthis.endTime = new Date();\n\n\t\tif (this._maxDiff >= 5000) {\n\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getMainServer().getServerConfig()['CLIENT_NAME'] + ' - Slow ' + this._functionType + ' Detected', '', (this._user ? 'User: ' + this._user + '\\n' : '') + this._functionType + ': ' + this._functionName + '\\n' + 'During this function the event loop did not run for ' + this._maxDiff + ' ms (' + this._maxDiff / 1000 + ' sec)' + (this._data ? '\\n\\nData: ' + JSON.stringify(this._data, null, 2) : ''));\n\t\t}\n\t}\n}"]}
1
+ {"version":3,"sources":["../../src/managers/monitor.manager.ts"],"names":[],"mappings":"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","file":"monitor.manager.js","sourcesContent":["import ResolveIOMainServer from '../server-app';\nimport axios from 'axios';\nimport { MonitorCPUs } from '../collections/monitor-cpu.collection';\nimport { MonitorMemorys } from '../collections/monitor-memory.collection';\nimport { MonitorMongos } from '../collections/monitor-mongo.collection';\nimport { ResolveIOServer } from '../index';\nimport { deepCopy } from '../util/common';\nimport { objectIdHexString } from './mongo.manager';\nconst os = require('os');\n\nexport class MonitorManager {\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _serverConfig;\n\tprivate _instanceHostname = '';\n\tprivate _monitorData = [];\n\n\tconstructor(mainServer, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._serverConfig = serverConfig;\n\t\tthis._instanceHostname = os.hostname().replace(/\\./g, '-');\n\n\t\tthis.setupIntervals();\n\t\tthis.setupEventLoop();\n\t}\n\n\t//Create function to get CPU information\n\tcpuAverage() {\n\t\t//Initialise sum of idle and time of cores and fetch CPU info\n\t\tvar totalIdle = 0, totalTick = 0;\n\t\tvar cpus = os.cpus();\n\t\n\t\t//Loop through CPU cores\n\t\tfor(var i = 0, len = cpus.length; i < len; i++) {\n\t\t\t//Select CPU core\n\t\t\tvar cpu = cpus[i];\n\t\t\n\t\t\t//Total up the time in the cores tick\n\t\t\tfor(let type in cpu.times) {\n\t\t\t\ttotalTick += cpu.times[type];\n\t\t\t}\n\t\t\n\t\t\t//Total up the idle time of the core\n\t\t\ttotalIdle += cpu.times.idle;\n\t\t}\n\t\n\t\t//Return the average Idle and Tick times\n\t\treturn {idle: totalIdle / cpus.length, total: totalTick / cpus.length};\n\t}\n\n\tasync setupIntervals() {\n\t\tif (this._serverConfig['ROOT_URL'] !== 'https://resolveio.com' && this._serverConfig['ROOT_URL'] !== 'http://localhost:4200') {\n\t\t\ttry {\n\t\t\t\tlet instanceId = await axios.get('http://169.254.169.254/latest/meta-data/instance-id');\n\n\t\t\t\tsetInterval(async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/health', {\n\t\t\t\t\t\t\ttype: 'application',\n\t\t\t\t\t\t\tid_aws_instance: instanceId.data,\n\t\t\t\t\t\t\tversion: typeof process.env.APP_VERSION === 'number' ? (<any>process.env.APP_VERSION).toString() : process.env.APP_VERSION,\n\t\t\t\t\t\t\tversion_key: process.env.APP_VERSION_KEY\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t}, 10000);\n\t\t\t}\n\t\t\tcatch(errHealth) {}\n\t\t}\n\n\t\tlet lastCPU = this.cpuAverage();\n\t\t\n\t\tsetInterval(() => {\n\t\t\tlet now = new Date();\n\n\t\t\t//Grab second Measure\n\t\t\tvar endMeasure = this.cpuAverage(); \n\n\t\t\t//Calculate the difference in idle and total time between the measures\n\t\t\tvar idleDifference = endMeasure.idle - lastCPU.idle;\n\t\t\tvar totalDifference = endMeasure.total - lastCPU.total;\n\n\t\t\t//Calculate the average percentage CPU usage\n\t\t\tvar percentageCPU = 1 - idleDifference / totalDifference;\n\t\t\t\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorCPUs.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0]\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tapp: percentageCPU,\n\t\t\t\t\tsystem: os.loadavg()[0],\n\t\t\t\t\ttype: 'cpu'\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlastCPU = endMeasure;\n\n\t\t\tconst memUsage = process.memoryUsage();\n\n\t\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\t\tMonitorMemorys.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem()\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: now,\n\t\t\t\t\tphysical_total: memUsage.heapTotal,\n\t\t\t\t\tphysical_used: memUsage.heapUsed,\n\t\t\t\t\tphysical_free: os.freemem(),\n\t\t\t\t\tvirtual: memUsage.rss,\n\t\t\t\t\tprivate: memUsage.external,\n\t\t\t\t\tphysical: os.totalmem(),\n\t\t\t\t\ttype: 'memory'\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\t}\n\n\t\n\n\taddMongoTracker(data: MongoMonitorModel) {\n\t\tif (this._serverConfig['ROOT_URL'] === 'https://resolveio.com' || this._serverConfig['ROOT_URL'] === 'http://localhost:4200') {\n\t\t\tif (!data.collection.startsWith('monitor-')) {\n\t\t\t\tMonitorMongos.create({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tif (this._instanceHostname) {\n\t\t\t\tthis._monitorData.push({\n\t\t\t\t\tmetadata: {\n\t\t\t\t\t\tinstance: this._instanceHostname,\n\t\t\t\t\t\tclient: this._serverConfig['CLIENT_NAME']\n\t\t\t\t\t},\n\t\t\t\t\tdate: new Date(data.date),\n\t\t\t\t\tmethod: data.method,\n\t\t\t\t\tdoc_collection: data.collection,\n\t\t\t\t\tduration: data.duration,\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\ttype: 'mongo'\n\t\t\t\t});\n\t\t\t}\n\t\t}\t\n\t}\n\n\tsetupEventLoop() {\n\t\tsetInterval(async () => {\n\t\t\tif (this._monitorData.length) {\n\t\t\t\tlet monitorData = [];\n\n\t\t\t\tif (this._monitorData.length > 10) {\n\t\t\t\t\tmonitorData = this._monitorData.splice(0, 10);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tmonitorData = deepCopy(this._monitorData);\n\t\t\t\t\tthis._monitorData = [];\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tawait axios.post('https://backend.resolveio.com/api/monitor', monitorData);\n\t\t\t\t}\n\t\t\t\tcatch (e) {}\n\t\t\t}\n\t\t}, 1000);\n\t}\n}\n\nexport interface MongoMonitorModel {\n\tdate: Date, \n\tmethod: string,\n\tcollection: string,\n\tduration: number,\n\tquery: string\n}\n\nexport class MonitorMongo {\n\tprivate _startTime = 0;\n\tprivate _method = '';\n\tprivate _collection = '';\n\tprivate _query = '';\n\n\tconstructor(method: string, collection: string, query: string) {\n\t\tthis._startTime = Date.now();\n\t\tthis._method = method;\n\t\tthis._collection = collection;\n\t\tthis._query = query;\n\t}\n\n\tpublic finish() {\n\t\tlet endTime = Date.now();\n\n\t\tlet mongoMonitor: MongoMonitorModel = {\n\t\t\tdate: new Date(endTime),\n\t\t\tmethod: this._method,\n\t\t\tcollection: this._collection,\n\t\t\tquery: this._query,\n\t\t\tduration: endTime - this._startTime\n\t\t};\n\n\t\tResolveIOServer.getMainServer().getMonitorManager().addMongoTracker(mongoMonitor);\n\t}\n}\n\nexport class MonitorManagerFunction {\n\tprivate _functionCnt = 0;\n\tprivate _functions: MonitorFunction[] = [];\n\tprivate _functionLastCompletedWS: {\n\t\t[id_socket: string]: MonitorFunction;\n\t} = {};\n\tprivate _functionLastCompleted: MonitorFunction;\n\n\tconstructor() {}\n\n\tstartMonitorFunction(functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any) {\n\t\tlet newMonitorFunction = new MonitorFunction(this._functionCnt++, functionType, functionName, user, id_socket, data);\n\t\tthis._functions.push(newMonitorFunction);\n\t\treturn newMonitorFunction.id;\n\t}\n\n\tfinishMonitorFunction(id: number) {\n\t\tlet monitor = this._functions.filter(a => a.id === id)[0];\n\t\tif (monitor) {\n\t\t\tmonitor.finish();\n\t\t\tthis._functionLastCompleted = monitor;\n\t\t\tthis._functionLastCompletedWS[monitor.id_socket] = monitor;\n\t\t\tthis._functions.splice(this._functions.map(a => a.id).indexOf(id), 1);\n\t\t}\n\t}\n\n\tgetActiveMonitorFunctions() {\n\t\treturn this._functions;\n\t}\n\n\tgetLastCompletedMonitorFunction() {\n\t\treturn this._functionLastCompleted;\n\t}\n\t\n\tgetLastCompletedMonitorFunctionWS() {\n\t\treturn this._functionLastCompletedWS;\n\t}\n}\n\nexport type MonitorFunctionType = 'Cron Method' | 'Internal Method' | 'Method' | 'User Specific Publication' | 'Publication';\nexport class MonitorFunction {\n\tprivate _timer: NodeJS.Timeout = null;\n\tprivate _maxDiff = 0;\n\tprivate _functionType: MonitorFunctionType;\n\tprivate _functionName: string;\n\tprivate _user: string;\n\tprivate _data: any;\n\tpublic startTime: Date = null;\n\tpublic endTime: Date = null;\n\tpublic lastTime: Date = null;\n\tpublic id_socket = '';\n\tpublic id = 0;\n\n\tconstructor(id: number, functionType: MonitorFunctionType, functionName: string, user: string, id_socket: string, data: any) {\n\t\tthis.id = id;\n\t\tthis.startTime = new Date();\n\t\tthis._functionType = functionType;\n\t\tthis._functionName = functionName;\n\t\tthis._user = user;\n\t\tthis.id_socket = id_socket;\n\t\tthis._data = data;\n\t\tthis.lastTime = new Date();\n\n\t\tthis._timer = setInterval(() => {\n\t\t\tlet diff = Date.now() - this.lastTime.getTime();\n\t\t\tif (diff > this._maxDiff) {\n\t\t\t\tthis._maxDiff = diff;\n\t\t\t}\n\n\t\t\tthis.lastTime = new Date();\n\t\t}, 1000);\n\t}\n\n\tpublic finish() {\n\t\tif (this._timer) {\n\t\t\tclearInterval(this._timer);\n\t\t\tthis._timer = null;\n\t\t}\n\n\t\tthis.endTime = new Date();\n\n\t\tif (this._maxDiff >= 5000) {\n\t\t\tResolveIOServer.getMainServer().getMethodManager().sendEmail('dev@resolveio.com', ResolveIOServer.getMainServer().getServerConfig()['CLIENT_NAME'] + ' - Slow ' + this._functionType + ' Detected', '', (this._user ? 'User: ' + this._user + '\\n' : '') + this._functionType + ': ' + this._functionName + '\\n' + 'During this function the event loop did not run for ' + this._maxDiff + ' ms (' + this._maxDiff / 1000 + ' sec)' + (this._data ? '\\n\\nData: ' + JSON.stringify(this._data, null, 2) : ''));\n\t\t}\n\t}\n}"]}
@@ -170,7 +170,7 @@ var SubscriptionManager = /** @class */ (function () {
170
170
  _this._debugRemoveCacheHits = 0;
171
171
  }, 60000);
172
172
  setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
173
- var _loop_1, this_1, i, queueArr, mongoQueue_1, promises, _loop_2, this_2, j;
173
+ var _loop_1, this_1, i, queueArr, _loop_2, this_2, i;
174
174
  var _this = this;
175
175
  return __generator(this, function (_a) {
176
176
  if (!this._runningQueue) {
@@ -216,121 +216,70 @@ var SubscriptionManager = /** @class */ (function () {
216
216
  }
217
217
  queueArr = this._mongoQueue.filter(function (a) { return !a.running; });
218
218
  if (queueArr.length) {
219
- // queueArr.forEach(entry => {
220
- // entry.running = true;
221
- // });
222
- // for (let i = queueArr.length - 1; i >= 0; i--) {
223
- // this._debugMongoQueueHits += 1;
224
- // let mongoQueue = queueArr[i];
225
- // if (!this._debugMongoQueueCollections.some(a => a.collection === mongoQueue.collection && a.publication === mongoQueue.subscription.publication)) {
226
- // this._debugMongoQueueCollections.push({
227
- // collection: mongoQueue.collection,
228
- // publication: mongoQueue.subscription.publication,
229
- // hits: 1
230
- // });
231
- // }
232
- // else {
233
- // this._debugMongoQueueCollections.filter(a => a.collection === mongoQueue.collection && a.publication === mongoQueue.subscription.publication)[0].hits += 1;
234
- // }
235
- // if (this._publications[mongoQueue.subscription.publication].user_specific) {
236
- // let promises = [];
237
- // for (let j = 0; j < mongoQueue.subscription.clients.length; j++) {
238
- // let client = mongoQueue.subscription.clients[j];
239
- // let ws = this._mainServer.getWS(client.id_socket);
240
- // if (ws && ws['id_socket'] === client.id_socket) {
241
- // promises.push(this.sendDataToOne(ws, client.messageId, mongoQueue.subscription, mongoQueue.type, mongoQueue.collection).catch((err) => {
242
- // this._mainServer.getMethodManager().sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + this.serverConfig['CLIENT_NAME'], 'Error Detected During sendDataToOne - User Specific - Socket: ' + client.id_socket + ', User: ' + client.id_user + ', MessageId: ' + client.messageId + ', Pub: ' + mongoQueue.subscription.publication + ', Err: ' + JSON.stringify(err, null, 2));
243
- // return null;
244
- // }));
245
- // }
246
- // }
247
- // Promise.all(promises).then(() => {
248
- // if (mongoQueue.run_again) {
249
- // mongoQueue.running = false;
250
- // mongoQueue.run_again = false;
251
- // }
252
- // else {
253
- // if (this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id) >= 0) {
254
- // this._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);
255
- // }
256
- // }
257
- // });
258
- // }
259
- // else {
260
- // this.sendDataToAll(mongoQueue).then(() => {
261
- // if (mongoQueue.run_again) {
262
- // mongoQueue.running = false;
263
- // mongoQueue.run_again = false;
264
- // }
265
- // else {
266
- // if (this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id) >= 0) {
267
- // this._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);
268
- // }
269
- // }
270
- // }, () => {
271
- // if (this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id) >= 0) {
272
- // this._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);
273
- // }
274
- // });
275
- // }
276
- // }
277
- this._debugMongoQueueHits += 1;
278
- mongoQueue_1 = queueArr[queueArr.length - 1];
279
- mongoQueue_1.running = true;
280
- if (!this._debugMongoQueueCollections.some(function (a) { return a.collection === mongoQueue_1.collection && a.publication === mongoQueue_1.subscription.publication; })) {
281
- this._debugMongoQueueCollections.push({
282
- collection: mongoQueue_1.collection,
283
- publication: mongoQueue_1.subscription.publication,
284
- hits: 1
285
- });
286
- }
287
- else {
288
- this._debugMongoQueueCollections.filter(function (a) { return a.collection === mongoQueue_1.collection && a.publication === mongoQueue_1.subscription.publication; })[0].hits += 1;
289
- }
290
- if (this._publications[mongoQueue_1.subscription.publication].user_specific) {
291
- promises = [];
292
- _loop_2 = function (j) {
293
- var client = mongoQueue_1.subscription.clients[j];
294
- var ws = this_2._mainServer.getWS(client.id_socket);
295
- if (ws && ws['id_socket'] === client.id_socket) {
296
- promises.push(this_2.sendDataToOne(ws, client.messageId, mongoQueue_1.subscription, mongoQueue_1.type, mongoQueue_1.collection).catch(function (err) {
297
- _this._mainServer.getMethodManager().sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + _this.serverConfig['CLIENT_NAME'], 'Error Detected During sendDataToOne - User Specific - Socket: ' + client.id_socket + ', User: ' + client.id_user + ', MessageId: ' + client.messageId + ', Pub: ' + mongoQueue_1.subscription.publication + ', Err: ' + JSON.stringify(err, null, 2));
298
- return null;
299
- }));
300
- }
301
- };
302
- this_2 = this;
303
- for (j = 0; j < mongoQueue_1.subscription.clients.length; j++) {
304
- _loop_2(j);
219
+ queueArr.forEach(function (entry) {
220
+ entry.running = true;
221
+ });
222
+ _loop_2 = function (i) {
223
+ this_2._debugMongoQueueHits += 1;
224
+ var mongoQueue = queueArr[i];
225
+ if (!this_2._debugMongoQueueCollections.some(function (a) { return a.collection === mongoQueue.collection && a.publication === mongoQueue.subscription.publication; })) {
226
+ this_2._debugMongoQueueCollections.push({
227
+ collection: mongoQueue.collection,
228
+ publication: mongoQueue.subscription.publication,
229
+ hits: 1
230
+ });
305
231
  }
306
- Promise.all(promises).then(function () {
307
- if (mongoQueue_1.run_again) {
308
- mongoQueue_1.running = false;
309
- mongoQueue_1.run_again = false;
310
- }
311
- else {
312
- if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id) >= 0) {
313
- _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id), 1);
232
+ else {
233
+ this_2._debugMongoQueueCollections.filter(function (a) { return a.collection === mongoQueue.collection && a.publication === mongoQueue.subscription.publication; })[0].hits += 1;
234
+ }
235
+ if (this_2._publications[mongoQueue.subscription.publication].user_specific) {
236
+ var promises = [];
237
+ var _loop_3 = function (j) {
238
+ var client = mongoQueue.subscription.clients[j];
239
+ var ws = this_2._mainServer.getWS(client.id_socket);
240
+ if (ws && ws['id_socket'] === client.id_socket) {
241
+ promises.push(this_2.sendDataToOne(ws, client.messageId, mongoQueue.subscription, mongoQueue.type, mongoQueue.collection).catch(function (err) {
242
+ _this._mainServer.getMethodManager().sendEmail('dev@resolveio.com', 'SERVER - Error Detected - ' + _this.serverConfig['CLIENT_NAME'], 'Error Detected During sendDataToOne - User Specific - Socket: ' + client.id_socket + ', User: ' + client.id_user + ', MessageId: ' + client.messageId + ', Pub: ' + mongoQueue.subscription.publication + ', Err: ' + JSON.stringify(err, null, 2));
243
+ return null;
244
+ }));
314
245
  }
246
+ };
247
+ for (var j = 0; j < mongoQueue.subscription.clients.length; j++) {
248
+ _loop_3(j);
315
249
  }
316
- });
317
- }
318
- else {
319
- this.sendDataToAll(mongoQueue_1).then(function () {
320
- if (mongoQueue_1.run_again) {
321
- mongoQueue_1.running = false;
322
- mongoQueue_1.run_again = false;
323
- }
324
- else {
325
- if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id) >= 0) {
326
- _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id), 1);
250
+ Promise.all(promises).then(function () {
251
+ if (mongoQueue.run_again) {
252
+ mongoQueue.running = false;
253
+ mongoQueue.run_again = false;
327
254
  }
328
- }
329
- }, function () {
330
- if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id) >= 0) {
331
- _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue_1._id), 1);
332
- }
333
- });
255
+ else {
256
+ if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id) >= 0) {
257
+ _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id), 1);
258
+ }
259
+ }
260
+ });
261
+ }
262
+ else {
263
+ this_2.sendDataToAll(mongoQueue).then(function () {
264
+ if (mongoQueue.run_again) {
265
+ mongoQueue.running = false;
266
+ mongoQueue.run_again = false;
267
+ }
268
+ else {
269
+ if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id) >= 0) {
270
+ _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id), 1);
271
+ }
272
+ }
273
+ }, function () {
274
+ if (_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id) >= 0) {
275
+ _this._mongoQueue.splice(_this._mongoQueue.map(function (a) { return a._id; }).indexOf(mongoQueue._id), 1);
276
+ }
277
+ });
278
+ }
279
+ };
280
+ this_2 = this;
281
+ for (i = queueArr.length - 1; i >= 0; i--) {
282
+ _loop_2(i);
334
283
  }
335
284
  // let endDate = new Date();
336
285
  // this.currentPerfomanceMonitor.push({
@@ -348,9 +297,9 @@ var SubscriptionManager = /** @class */ (function () {
348
297
  }
349
298
  return [2 /*return*/];
350
299
  });
351
- }); }, 25);
300
+ }); }, 250);
352
301
  setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
353
- var _a, userCopy, _loop_3, this_3, i, i, sub, _loop_4, this_4, j;
302
+ var _a, userCopy, _loop_4, this_3, i, i, sub, _loop_5, this_4, j;
354
303
  return __generator(this, function (_b) {
355
304
  switch (_b.label) {
356
305
  case 0:
@@ -359,7 +308,7 @@ var SubscriptionManager = /** @class */ (function () {
359
308
  case 1:
360
309
  _a._loggedInUsers = _b.sent();
361
310
  userCopy = common_1.deepCopy(this._loggedInUsers);
362
- _loop_3 = function (i) {
311
+ _loop_4 = function (i) {
363
312
  var loggedInUser = userCopy[i];
364
313
  if (!loggedInUser.date || Date.now() - loggedInUser.date.getTime() > 120000) {
365
314
  if (this_3._mainServer.getWS(loggedInUser.id_ws)) {
@@ -386,11 +335,11 @@ var SubscriptionManager = /** @class */ (function () {
386
335
  };
387
336
  this_3 = this;
388
337
  for (i = this._loggedInUsers.length - 1; i >= 0; i--) {
389
- _loop_3(i);
338
+ _loop_4(i);
390
339
  }
391
340
  for (i = 0; i < this._subscriptions.length; i++) {
392
341
  sub = this._subscriptions[i];
393
- _loop_4 = function (j) {
342
+ _loop_5 = function (j) {
394
343
  var client = sub.clients[j];
395
344
  if (!this_4._loggedInUsers.some(function (a) { return a.id_ws === client.id_socket; })) {
396
345
  sub.clients.splice(j, 1);
@@ -398,7 +347,7 @@ var SubscriptionManager = /** @class */ (function () {
398
347
  };
399
348
  this_4 = this;
400
349
  for (j = sub.clients.length - 1; j >= 0; j--) {
401
- _loop_4(j);
350
+ _loop_5(j);
402
351
  }
403
352
  }
404
353
  return [2 /*return*/];