From 1e39aca39664e3df8edded86bc524da8850be417 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Fri, 20 May 2022 14:55:21 -0300 Subject: [PATCH 1/2] mySegments refresh rate --- package-lock.json | 2 +- package.json | 2 +- .../__tests__/telemetrySubmitter.spec.ts | 2 +- src/sync/submitters/telemetrySubmitter.ts | 4 +++- src/sync/submitters/types.ts | 3 ++- src/utils/timeTracker/now/__tests__/now.spec.ts | 14 ++++++++++---- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3fff5fb8..b55fa9c8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.2-rc.5", + "version": "1.3.2-rc.6", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 306d2bbd..d16841f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.2-rc.5", + "version": "1.3.2-rc.6", "description": "Split Javascript SDK common components", "main": "cjs/index.js", "module": "esm/index.js", diff --git a/src/sync/submitters/__tests__/telemetrySubmitter.spec.ts b/src/sync/submitters/__tests__/telemetrySubmitter.spec.ts index 49e5fd5d..bbe74a59 100644 --- a/src/sync/submitters/__tests__/telemetrySubmitter.spec.ts +++ b/src/sync/submitters/__tests__/telemetrySubmitter.spec.ts @@ -61,7 +61,7 @@ describe('Telemetry submitter', () => { expect(recordTimeUntilReadySpy).toBeCalledTimes(1); expect(postMetricsConfig).toBeCalledWith(JSON.stringify({ - oM: 0, st: 'memory', aF: 0, rF: 0, sE: true, rR: { sp: 0.001, se: 0.001, im: 0.001, ev: 0.001, te: 0.1 }, uO: { s: true, e: true, a: true, st: true, t: true }, iQ: 1, eQ: 1, iM: 0, iL: false, hP: false, tR: 0, tC: 0, nR: 0, t: [], i: ['NoopIntegration'], uC: 0 + oM: 0, st: 'memory', aF: 0, rF: 0, sE: true, rR: { sp: 0.001, ms: 0.001, im: 0.001, ev: 0.001, te: 0.1 }, uO: { s: true, e: true, a: true, st: true, t: true }, iQ: 1, eQ: 1, iM: 0, iL: false, hP: false, tR: 0, tC: 0, nR: 0, t: [], i: ['NoopIntegration'], uC: 0 })); // Stop submitter, to not execute the 1st periodic metrics/usage POST diff --git a/src/sync/submitters/telemetrySubmitter.ts b/src/sync/submitters/telemetrySubmitter.ts index 54b36a97..8e208e59 100644 --- a/src/sync/submitters/telemetrySubmitter.ts +++ b/src/sync/submitters/telemetrySubmitter.ts @@ -90,12 +90,14 @@ export function telemetryCacheConfigAdapter(telemetry: ITelemetryCacheSync, sett state(): TelemetryConfigStatsPayload { const { urls, scheduler } = settings; + const isClientSide = settings.core.key !== undefined; return objectAssign(getTelemetryConfigStats(settings.mode, settings.storage.type), { sE: settings.streamingEnabled, rR: { sp: scheduler.featuresRefreshRate / 1000, - se: scheduler.segmentsRefreshRate / 1000, + se: isClientSide ? undefined : scheduler.segmentsRefreshRate / 1000, + ms: isClientSide ? scheduler.segmentsRefreshRate / 1000 : undefined, im: scheduler.impressionsRefreshRate / 1000, ev: scheduler.eventsPushRate / 1000, te: scheduler.telemetryRefreshRate / 1000, diff --git a/src/sync/submitters/types.ts b/src/sync/submitters/types.ts index aa3dcb59..f4eb8c7b 100644 --- a/src/sync/submitters/types.ts +++ b/src/sync/submitters/types.ts @@ -151,7 +151,8 @@ export type ImpressionsMode = OPTIMIZED_ENUM | DEBUG_ENUM; export type RefreshRates = { sp: number, // splits - se: number, // mySegments + se?: number, // segments + ms?: number, // mySegments im: number, // impressions ev: number, // events te: number, // telemetry diff --git a/src/utils/timeTracker/now/__tests__/now.spec.ts b/src/utils/timeTracker/now/__tests__/now.spec.ts index ded2c815..5097d894 100644 --- a/src/utils/timeTracker/now/__tests__/now.spec.ts +++ b/src/utils/timeTracker/now/__tests__/now.spec.ts @@ -16,15 +16,21 @@ limitations under the License. import { now as nowBrowser } from '../browser'; import { now as nowNode } from '../node'; +import { nearlyEqual } from '../../../../__tests__/testUtils/index'; [nowBrowser, nowNode].forEach(now => { - test('NOW / should generate a value each time you call it', () => { - let n1 = now(); - let n2 = now(); - let n3 = now(); + test('NOW / should generate a value each time you call it', async () => { + const n1 = now(); + const n2 = now(); + + const delay = 200; + await new Promise(res => setTimeout(res, delay)); + const n3 = now(); expect(Number.isFinite(n1)).toBe(true); // is a finite value? expect(Number.isFinite(n2)).toBe(true); // is a finite value? expect(Number.isFinite(n3)).toBe(true); // is a finite value? + expect(nearlyEqual(n1, n2)).toBe(true); + expect(nearlyEqual(n1 + delay, n3)).toBe(true); }); }); From c599a8ef80e0d418b3279cb7d8ce80ab778debe5 Mon Sep 17 00:00:00 2001 From: Emiliano Sanchez Date: Fri, 20 May 2022 15:15:07 -0300 Subject: [PATCH 2/2] prepare stable release --- CHANGES.txt | 5 +++++ package-lock.json | 2 +- package.json | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 35a4822c..bcc3a808 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,8 @@ +1.4.0 (May 20, 2022) + - Added `scheduler.telemetryRefreshRate` property to SDK configuration, and deprecated `scheduler.metricsRefreshRate` property. + - Updated SDK telemetry storage, metrics and updater to be more effective and send less often. + - Bugfixing - Updated default values for `scheduler.impressionsRefreshRate` config parameter: 300s for OPTIMIZED impression mode and 60s for DEBUG impression mode. + 1.3.1 (April 19, 2022) - Bugfixing - Added peer dependencies to avoid issues when requiring some third-party dependencies used by modules of the package (Related to issue https://github.com/splitio/javascript-client/issues/662). - Bugfixing - Updated `ready` method to rejects the promise with an Error object instead of a string value (Related to issue https://github.com/splitio/javascript-client/issues/654). diff --git a/package-lock.json b/package-lock.json index b55fa9c8..2be921ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.2-rc.6", + "version": "1.4.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index d16841f8..671e18f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@splitsoftware/splitio-commons", - "version": "1.3.2-rc.6", + "version": "1.4.0", "description": "Split Javascript SDK common components", "main": "cjs/index.js", "module": "esm/index.js",