1 | ;
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const utils_1 = require("@terascope/utils");
|
7 | const observer_1 = __importDefault(require("./observer"));
|
8 | /**
|
9 | * An Observer for monitoring the Slice Analyitcs
|
10 | */
|
11 | class 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 | }
|
61 | exports.default = JobObserver;
|
62 | function getMemoryUsage() {
|
63 | return process.memoryUsage().heapUsed;
|
64 | }
|
65 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLW9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvam9iLW9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNENBQXlDO0FBRXpDLDBEQUFrQztBQUVsQzs7R0FFRztBQUNILE1BQXFCLFdBQVksU0FBUSxrQkFBUTtJQWU3QyxZQUFZLE9BQXNCLEVBQUUsU0FBb0IsRUFBRSxlQUFnQztRQUN0RixLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBRW5ELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBZTtRQUNwQyxJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUV2QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hEO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLE9BQWUsRUFBRSxLQUFhO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1FBQy9CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBRTNCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUVuQyxJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLE1BQU0sRUFBRSxjQUFjLEVBQUU7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7U0FDbkIsQ0FBQztJQUNOLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFFLFNBQWlCO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUNuQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPO1FBRTdELElBQUksQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDO1FBRS9CLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUUzQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRTdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsT0FBTztZQUNILElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxNQUFNLEVBQUUsYUFBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDLENBQUM7SUFDTixDQUFDO0NBQ0o7QUEzRUQsOEJBMkVDO0FBRUQsU0FBUyxjQUFjO0lBQ25CLE9BQU8sT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUMxQyxDQUFDIn0= |
\ | No newline at end of file |