UNPKG

4.98 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const utils_1 = require("@terascope/utils");
7const observer_1 = __importDefault(require("./observer"));
8/**
9 * An Observer for monitoring the Slice Analyitcs
10 */
11class JobObserver extends observer_1.default {
12 constructor(context, apiConfig, executionConfig) {
13 super(context, apiConfig, executionConfig);
14 this._opLength = executionConfig.operations.length;
15 this.collectAnalytics = executionConfig.analytics;
16 if (this.collectAnalytics) {
17 this.analyticsData = this.defaultAnalytics();
18 }
19 this._initialized = null;
20 this._currentSliceId = '';
21 this._currentIndex = -1;
22 }
23 async onSliceInitialized(sliceId) {
24 this._currentSliceId = sliceId;
25 this._currentIndex = 0;
26 if (this.collectAnalytics) {
27 this.analyticsData = this.defaultAnalytics();
28 }
29 this._initialized = null;
30 }
31 onOperationStart(sliceId, index) {
32 this._currentSliceId = sliceId;
33 this._currentIndex = index;
34 if (!this.collectAnalytics)
35 return;
36 this._initialized = {
37 memory: getMemoryUsage(),
38 time: Date.now(),
39 };
40 }
41 onOperationComplete(sliceId, index, processed) {
42 if (!this.collectAnalytics)
43 return;
44 if (this._initialized == null || !this.analyticsData)
45 return;
46 this._currentSliceId = sliceId;
47 const { memory, time } = this._initialized;
48 this.analyticsData.time[index] = Date.now() - time;
49 this.analyticsData.size[index] = processed || 0;
50 this.analyticsData.memory[index] = getMemoryUsage() - memory;
51 this._initialized = null;
52 }
53 defaultAnalytics() {
54 return {
55 time: utils_1.times(this._opLength, () => -1),
56 memory: utils_1.times(this._opLength, () => -1),
57 size: utils_1.times(this._opLength, () => -1),
58 };
59 }
60}
61exports.default = JobObserver;
62function getMemoryUsage() {
63 return process.memoryUsage().heapUsed;
64}
65//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvam9iLW9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQXlDO0FBRXpDLDBEQUFrQztBQUVsQzs7R0FFRztBQUNILE1BQXFCLFdBQVksU0FBUSxrQkFBUTtJQWU3QyxZQUFZLE9BQXNCLEVBQUUsU0FBb0IsRUFBRSxlQUFnQztRQUN0RixLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRW5ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZTtRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWUsRUFBRSxLQUFhO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUVuQyxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLE1BQU0sRUFBRSxjQUFjLEVBQUU7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7U0FDbkIsQ0FBQztJQUNOLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLFNBQWlCO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUNuQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBRTdELElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1FBRS9CLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUUzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRTdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsT0FBTztZQUNILElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUEzRUQsOEJBMkVDO0FBRUQsU0FBUyxjQUFjO0lBQ25CLE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUMxQyxDQUFDIn0=
\No newline at end of file