@nsshunt/stsappframework 3.0.61 → 3.0.63
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.
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.InfluxDBManager = void 0;
|
|
4
7
|
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
@@ -11,6 +14,8 @@ const goptions = (0, stsconfig_1.$Options)();
|
|
|
11
14
|
const influxDBManagerService_1 = require("./influxDBManagerService");
|
|
12
15
|
const influxDBManagerAgent_1 = require("./influxDBManagerAgent");
|
|
13
16
|
const influxdb_client_apis_1 = require("@influxdata/influxdb-client-apis");
|
|
17
|
+
const debug_1 = __importDefault(require("debug"));
|
|
18
|
+
const debug = (0, debug_1.default)(`proc:${process.pid}`);
|
|
14
19
|
/*
|
|
15
20
|
Manual docker run command and setup -------------------------------------------------------
|
|
16
21
|
|
|
@@ -243,16 +248,94 @@ class InfluxDBManager {
|
|
|
243
248
|
}
|
|
244
249
|
this.#BoostrapInfluxDB();
|
|
245
250
|
this.#queryApi = this.#client.getQueryApi(this.#org);
|
|
246
|
-
|
|
251
|
+
/* Defaults from the library as at 12/11/2023
|
|
252
|
+
// default RetryDelayStrategyOptions
|
|
253
|
+
export const DEFAULT_RetryDelayStrategyOptions = {
|
|
254
|
+
retryJitter: 200,
|
|
255
|
+
minRetryDelay: 5000,
|
|
256
|
+
maxRetryDelay: 125000,
|
|
257
|
+
exponentialBase: 5,
|
|
258
|
+
randomRetry: true,
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// default writeOptions
|
|
262
|
+
export const DEFAULT_WriteOptions: WriteOptions = {
|
|
263
|
+
batchSize: 1000,
|
|
264
|
+
maxBatchBytes: 50_000_000, // default max batch size in the cloud
|
|
265
|
+
flushInterval: 60000,
|
|
266
|
+
writeFailed: function () {},
|
|
267
|
+
writeSuccess: function () {},
|
|
268
|
+
writeRetrySkipped: function () {},
|
|
269
|
+
maxRetries: 5,
|
|
270
|
+
maxRetryTime: 180_000,
|
|
271
|
+
maxBufferLines: 32_000,
|
|
272
|
+
// a copy of DEFAULT_RetryDelayStrategyOptions, so that DEFAULT_WriteOptions could be tree-shaken
|
|
273
|
+
retryJitter: 200,
|
|
274
|
+
minRetryDelay: 5000,
|
|
275
|
+
maxRetryDelay: 125000,
|
|
276
|
+
exponentialBase: 2,
|
|
277
|
+
gzipThreshold: 1000,
|
|
278
|
+
randomRetry: true,
|
|
279
|
+
}
|
|
280
|
+
*/
|
|
281
|
+
const flushBatchSize = influxdb_client_1.DEFAULT_WriteOptions.batchSize;
|
|
282
|
+
const writeOptions = {
|
|
283
|
+
/* the maximum points/lines to send in a single batch to InfluxDB server */
|
|
284
|
+
batchSize: flushBatchSize + 1,
|
|
285
|
+
/* default tags to add to every point */
|
|
286
|
+
//defaultTags: {location: hostname},
|
|
287
|
+
/* maximum time in millis to keep points in an unflushed batch, 0 means don't periodically flush */
|
|
288
|
+
flushInterval: 0,
|
|
289
|
+
// max size of a batch in bytes
|
|
290
|
+
maxBatchBytes: 50000000,
|
|
291
|
+
// Retry Options
|
|
292
|
+
/* maximum size of the retry buffer - it contains items that could not be sent for the first time */
|
|
293
|
+
maxBufferLines: 30000,
|
|
294
|
+
/* the count of internally-scheduled retries upon write failure, the delays between write attempts follow an exponential backoff strategy if there is no Retry-After HTTP header */
|
|
295
|
+
maxRetries: 5,
|
|
296
|
+
// max time (millis) that can be spent with retries
|
|
297
|
+
maxRetryTime: 180000,
|
|
298
|
+
// ... there are more write options that can be customized, see
|
|
299
|
+
// https://influxdata.github.io/influxdb-client-js/influxdb-client.writeoptions.html and
|
|
300
|
+
// https://influxdata.github.io/influxdb-client-js/influxdb-client.writeretryoptions.html
|
|
301
|
+
writeFailed(error, lines, attempt, expires) {
|
|
302
|
+
debug(`writeOptions:writeSuccess(): Error: [${error}], Attempt: [${attempt}], Expires: [${expires}], Lines: [${lines}]`.red);
|
|
303
|
+
},
|
|
304
|
+
writeSuccess(lines) {
|
|
305
|
+
debug(`writeOptions:writeSuccess(): Lines: [${lines}]`.green);
|
|
306
|
+
},
|
|
307
|
+
writeRetrySkipped(entry) {
|
|
308
|
+
debug(`writeOptions:writeSuccess(): Expires: [${entry.expires}], Lines: [${entry.lines}]`.magenta);
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
this.#writeClient = this.#client.getWriteApi(this.#org, this.#bucket, 'ns', writeOptions);
|
|
247
312
|
this.CreateInfluxDBManagerClient('service');
|
|
248
313
|
this.CreateInfluxDBManagerClient('agent');
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
314
|
+
let attemptCount = 0;
|
|
315
|
+
const maxAttemptCount = 5;
|
|
316
|
+
const normalFlushDelay = 1000;
|
|
317
|
+
const retryFlushDelay = 2500;
|
|
318
|
+
const StartWriteClient = (delay) => {
|
|
319
|
+
this.#writeDataPointFlushTimeout = setTimeout(async () => {
|
|
320
|
+
try {
|
|
321
|
+
attemptCount++;
|
|
322
|
+
await this.#writeClient.flush();
|
|
323
|
+
attemptCount = 0;
|
|
324
|
+
StartWriteClient(normalFlushDelay);
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
console.error(`InfluxDBManager:StartWriteClient(): Attempt: [${attemptCount}], Error: [${error}]`.red);
|
|
328
|
+
if (attemptCount === maxAttemptCount) {
|
|
329
|
+
console.error(`InfluxDBManager:StartWriteClient(): Max Attempts reached. Will no longer retry.`.red);
|
|
330
|
+
console.error(`InfluxDBManager:StartWriteClient(): InfluxDB data capture ended in permanent faiilure.`.red);
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
StartWriteClient(retryFlushDelay);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}, delay).unref();
|
|
254
337
|
};
|
|
255
|
-
StartWriteClient();
|
|
338
|
+
StartWriteClient(normalFlushDelay);
|
|
256
339
|
}
|
|
257
340
|
#BoostrapInfluxDB = async () => {
|
|
258
341
|
const tasksAPI = new influxdb_client_apis_1.TasksAPI(this.#client);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxDBManager.js","sourceRoot":"","sources":["../../src/influxdb/influxDBManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"influxDBManager.js","sourceRoot":"","sources":["../../src/influxdb/influxDBManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF
|
|
2
|
-
import { InfluxDB,
|
|
2
|
+
import { InfluxDB, WriteApi, QueryApi, DEFAULT_WriteOptions, WriteOptions } from '@influxdata/influxdb-client'
|
|
3
3
|
// Use below for production https mode - needs to be config item
|
|
4
4
|
//import { Agent } from 'https'
|
|
5
5
|
import { Agent } from 'http'
|
|
@@ -14,8 +14,9 @@ import { InfluxDBManagerAgent } from './influxDBManagerAgent'
|
|
|
14
14
|
import { IInfluxDBManagerOptions, InstrumentPayload } from './../commonTypes'
|
|
15
15
|
|
|
16
16
|
import { TasksAPI, Tasks, Task } from '@influxdata/influxdb-client-apis'
|
|
17
|
-
|
|
18
|
-
import
|
|
17
|
+
|
|
18
|
+
import debugModule from 'debug'
|
|
19
|
+
const debug = debugModule(`proc:${process.pid}`);
|
|
19
20
|
|
|
20
21
|
/*
|
|
21
22
|
Manual docker run command and setup -------------------------------------------------------
|
|
@@ -261,20 +262,104 @@ export class InfluxDBManager
|
|
|
261
262
|
|
|
262
263
|
this.#BoostrapInfluxDB();
|
|
263
264
|
|
|
264
|
-
this.#queryApi = this.#client.getQueryApi(this.#org)
|
|
265
|
-
this.#writeClient = this.#client.getWriteApi(this.#org, this.#bucket, 'ns')
|
|
265
|
+
this.#queryApi = this.#client.getQueryApi(this.#org);
|
|
266
266
|
|
|
267
|
+
/* Defaults from the library as at 12/11/2023
|
|
268
|
+
// default RetryDelayStrategyOptions
|
|
269
|
+
export const DEFAULT_RetryDelayStrategyOptions = {
|
|
270
|
+
retryJitter: 200,
|
|
271
|
+
minRetryDelay: 5000,
|
|
272
|
+
maxRetryDelay: 125000,
|
|
273
|
+
exponentialBase: 5,
|
|
274
|
+
randomRetry: true,
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// default writeOptions
|
|
278
|
+
export const DEFAULT_WriteOptions: WriteOptions = {
|
|
279
|
+
batchSize: 1000,
|
|
280
|
+
maxBatchBytes: 50_000_000, // default max batch size in the cloud
|
|
281
|
+
flushInterval: 60000,
|
|
282
|
+
writeFailed: function () {},
|
|
283
|
+
writeSuccess: function () {},
|
|
284
|
+
writeRetrySkipped: function () {},
|
|
285
|
+
maxRetries: 5,
|
|
286
|
+
maxRetryTime: 180_000,
|
|
287
|
+
maxBufferLines: 32_000,
|
|
288
|
+
// a copy of DEFAULT_RetryDelayStrategyOptions, so that DEFAULT_WriteOptions could be tree-shaken
|
|
289
|
+
retryJitter: 200,
|
|
290
|
+
minRetryDelay: 5000,
|
|
291
|
+
maxRetryDelay: 125000,
|
|
292
|
+
exponentialBase: 2,
|
|
293
|
+
gzipThreshold: 1000,
|
|
294
|
+
randomRetry: true,
|
|
295
|
+
}
|
|
296
|
+
*/
|
|
297
|
+
|
|
298
|
+
const flushBatchSize = DEFAULT_WriteOptions.batchSize;
|
|
299
|
+
|
|
300
|
+
const writeOptions: Partial<WriteOptions> = {
|
|
301
|
+
/* the maximum points/lines to send in a single batch to InfluxDB server */
|
|
302
|
+
batchSize: flushBatchSize + 1, // don't let automatically flush data
|
|
303
|
+
/* default tags to add to every point */
|
|
304
|
+
//defaultTags: {location: hostname},
|
|
305
|
+
/* maximum time in millis to keep points in an unflushed batch, 0 means don't periodically flush */
|
|
306
|
+
flushInterval: 0,
|
|
307
|
+
// max size of a batch in bytes
|
|
308
|
+
maxBatchBytes: 50_000_000, // default max batch size in the cloud
|
|
309
|
+
|
|
310
|
+
// Retry Options
|
|
311
|
+
|
|
312
|
+
/* maximum size of the retry buffer - it contains items that could not be sent for the first time */
|
|
313
|
+
maxBufferLines: 30000,
|
|
314
|
+
/* the count of internally-scheduled retries upon write failure, the delays between write attempts follow an exponential backoff strategy if there is no Retry-After HTTP header */
|
|
315
|
+
maxRetries: 5, // do not retry writes
|
|
316
|
+
// max time (millis) that can be spent with retries
|
|
317
|
+
maxRetryTime: 180_000,
|
|
318
|
+
|
|
319
|
+
// ... there are more write options that can be customized, see
|
|
320
|
+
// https://influxdata.github.io/influxdb-client-js/influxdb-client.writeoptions.html and
|
|
321
|
+
// https://influxdata.github.io/influxdb-client-js/influxdb-client.writeretryoptions.html
|
|
322
|
+
writeFailed(error, lines, attempt, expires) {
|
|
323
|
+
debug(`writeOptions:writeSuccess(): Error: [${error}], Attempt: [${attempt}], Expires: [${expires}], Lines: [${lines}]`.red);
|
|
324
|
+
},
|
|
325
|
+
writeSuccess(lines) {
|
|
326
|
+
debug(`writeOptions:writeSuccess(): Lines: [${lines}]`.green);
|
|
327
|
+
},
|
|
328
|
+
writeRetrySkipped(entry) {
|
|
329
|
+
debug(`writeOptions:writeSuccess(): Expires: [${entry.expires}], Lines: [${entry.lines}]`.magenta);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
this.#writeClient = this.#client.getWriteApi(this.#org, this.#bucket, 'ns', writeOptions);
|
|
334
|
+
|
|
267
335
|
this.CreateInfluxDBManagerClient('service');
|
|
268
336
|
this.CreateInfluxDBManagerClient('agent');
|
|
269
337
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
338
|
+
let attemptCount = 0;
|
|
339
|
+
const maxAttemptCount = 5;
|
|
340
|
+
const normalFlushDelay = 1000;
|
|
341
|
+
const retryFlushDelay = 2500;
|
|
342
|
+
|
|
343
|
+
const StartWriteClient = (delay: number) => {
|
|
344
|
+
this.#writeDataPointFlushTimeout = setTimeout(async () => {
|
|
345
|
+
try {
|
|
346
|
+
attemptCount++;
|
|
347
|
+
await this.#writeClient.flush();
|
|
348
|
+
attemptCount = 0;
|
|
349
|
+
StartWriteClient(normalFlushDelay);
|
|
350
|
+
} catch (error) {
|
|
351
|
+
console.error(`InfluxDBManager:StartWriteClient(): Attempt: [${attemptCount}], Error: [${error}]`.red)
|
|
352
|
+
if (attemptCount === maxAttemptCount) {
|
|
353
|
+
console.error(`InfluxDBManager:StartWriteClient(): Max Attempts reached. Will no longer retry.`.red);
|
|
354
|
+
console.error(`InfluxDBManager:StartWriteClient(): InfluxDB data capture ended in permanent faiilure.`.red);
|
|
355
|
+
} else {
|
|
356
|
+
StartWriteClient(retryFlushDelay);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}, delay).unref();
|
|
275
360
|
}
|
|
276
361
|
|
|
277
|
-
StartWriteClient();
|
|
362
|
+
StartWriteClient(normalFlushDelay);
|
|
278
363
|
}
|
|
279
364
|
|
|
280
365
|
#BoostrapInfluxDB = async(): Promise<void> => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"influxDBManager.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9C,OAAO,EAAE,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAA2B,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"influxDBManager.d.ts","sourceRoot":"","sources":["../../src/influxdb/influxDBManager.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9C,OAAO,EAAE,sBAAsB,EAAC,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAA2B,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AA0L7E,qBAAa,eAAe;;;IAuLxB,2BAA2B,CAAC,SAAS,EAAE,MAAM;IAa7C,IAAI,cAAc,IAAI,sBAAsB,CAE3C;IAED,IAAI,YAAY,IAAI,oBAAoB,CAEvC;IAED,KAAK,sBAEJ;IAED,SAAS,sBAuBR;IAQD,sBAAsB,aAAc,GAAG,EAAE,SAUxC;IAGD,kBAAkB,CAAC,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU;IAaxE,cAAc,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CAe/E"}
|