Skip to content

Commit 28c6273

Browse files
Update logs
AI-Session-Id: 5273e4be-ae33-4f9e-9d3a-5bba29e624f2 AI-Tool: claude-code AI-Model: unknown
1 parent 1c77831 commit 28c6273

19 files changed

Lines changed: 168 additions & 149 deletions

src/logger/constants.ts

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ export const RETRIEVE_CLIENT_DEFAULT = 27;
1919
export const RETRIEVE_CLIENT_EXISTING = 28;
2020
export const RETRIEVE_MANAGER = 29;
2121
export const SYNC_OFFLINE_DATA = 30;
22-
export const SYNC_SPLITS_FETCH = 31;
23-
export const SYNC_SPLITS_UPDATE = 32;
24-
export const SYNC_RBS_UPDATE = 33;
22+
export const SYNC_FETCH = 31;
23+
export const SYNC_UPDATE = 32;
2524
export const STREAMING_NEW_MESSAGE = 35;
2625
export const SYNC_TASK_START = 36;
2726
export const SYNC_TASK_EXECUTE = 37;
@@ -38,7 +37,6 @@ export const NEW_FACTORY = 105;
3837
export const POLLING_SMART_PAUSING = 106;
3938
export const POLLING_START = 107;
4039
export const POLLING_STOP = 108;
41-
export const SYNC_SPLITS_FETCH_RETRY = 109;
4240
export const STREAMING_REFRESH_TOKEN = 110;
4341
export const STREAMING_RECONNECT = 111;
4442
export const STREAMING_CONNECTING = 112;
@@ -60,8 +58,8 @@ export const ENGINE_VALUE_INVALID = 200;
6058
export const ENGINE_VALUE_NO_ATTRIBUTES = 201;
6159
export const CLIENT_NO_LISTENER = 202;
6260
export const CLIENT_NOT_READY_FROM_CACHE = 203;
63-
export const SYNC_MYSEGMENTS_FETCH_RETRY = 204;
64-
export const SYNC_SPLITS_FETCH_FAILS = 205;
61+
export const SYNC_FETCH_RETRY = 204;
62+
export const SYNC_FETCH_FAILS = 205;
6563
export const STREAMING_PARSING_ERROR_FAILS = 206;
6664
export const STREAMING_PARSING_MESSAGE_FAILS = 207;
6765
export const STREAMING_FALLBACK = 208;
@@ -124,15 +122,12 @@ export const LOG_PREFIX_ENGINE = 'engine';
124122
export const LOG_PREFIX_ENGINE_COMBINER = LOG_PREFIX_ENGINE + ':combiner: ';
125123
export const LOG_PREFIX_ENGINE_MATCHER = LOG_PREFIX_ENGINE + ':matcher: ';
126124
export const LOG_PREFIX_ENGINE_VALUE = LOG_PREFIX_ENGINE + ':value: ';
127-
export const LOG_PREFIX_SYNC = 'sync';
128-
export const LOG_PREFIX_SYNC_MANAGER = LOG_PREFIX_SYNC + ':sync-manager: ';
129-
export const LOG_PREFIX_SYNC_OFFLINE = LOG_PREFIX_SYNC + ':offline: ';
130-
export const LOG_PREFIX_SYNC_STREAMING = LOG_PREFIX_SYNC + ':streaming: ';
131-
export const LOG_PREFIX_SYNC_SPLITS = LOG_PREFIX_SYNC + ':featureflag-changes: ';
132-
export const LOG_PREFIX_SYNC_SEGMENTS = LOG_PREFIX_SYNC + ':segment-changes: ';
133-
export const LOG_PREFIX_SYNC_MYSEGMENTS = LOG_PREFIX_SYNC + ':my-segments: ';
134-
export const LOG_PREFIX_SYNC_POLLING = LOG_PREFIX_SYNC + ':polling-manager: ';
135-
export const LOG_PREFIX_SYNC_SUBMITTERS = LOG_PREFIX_SYNC + ':submitter: ';
125+
export const LOG_PREFIX_SYNC = 'sync: ';
126+
export const LOG_PREFIX_SYNC_MANAGER = 'sync:sync-manager: ';
127+
export const LOG_PREFIX_SYNC_OFFLINE = 'sync:offline: ';
128+
export const LOG_PREFIX_SYNC_STREAMING = 'sync:streaming: ';
129+
export const LOG_PREFIX_SYNC_POLLING = 'sync:polling-manager: ';
130+
export const LOG_PREFIX_SYNC_SUBMITTERS = 'sync:submitter: ';
136131
export const LOG_PREFIX_IMPRESSIONS_TRACKER = 'impressions-tracker: ';
137132
export const LOG_PREFIX_EVENTS_TRACKER = 'events-tracker: ';
138133
export const LOG_PREFIX_UNIQUE_KEYS_TRACKER = 'unique-keys-tracker: ';

src/logger/messages/debug.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,12 @@ export const codesDebug: [number, string][] = codesInfo.concat([
2121
[c.RETRIEVE_MANAGER, 'Retrieving manager instance.'],
2222
// synchronizer
2323
[c.SYNC_OFFLINE_DATA, c.LOG_PREFIX_SYNC_OFFLINE + 'Feature flags data: \n%s'],
24-
[c.SYNC_SPLITS_FETCH, c.LOG_PREFIX_SYNC_SPLITS + 'Spin up feature flags update using since = %s and rbSince = %s.'],
25-
[c.SYNC_SPLITS_UPDATE, c.LOG_PREFIX_SYNC_SPLITS + 'New feature flags: %s. Removed feature flags: %s.'],
26-
[c.SYNC_RBS_UPDATE, c.LOG_PREFIX_SYNC_SPLITS + 'New rule-based segments: %s. Removed rule-based segments: %s.'],
24+
[c.SYNC_FETCH, c.LOG_PREFIX_SYNC + 'Spin up %s updates using since = %s and rbSince = %s.'],
25+
[c.SYNC_UPDATE, c.LOG_PREFIX_SYNC + 'New %s: %s. Removed: %s.'],
2726
[c.STREAMING_NEW_MESSAGE, c.LOG_PREFIX_SYNC_STREAMING + 'New SSE message received, with data: %s.'],
28-
[c.SYNC_TASK_START, c.LOG_PREFIX_SYNC + ': Starting %s. Running each %s millis'],
29-
[c.SYNC_TASK_EXECUTE, c.LOG_PREFIX_SYNC + ': Running %s'],
30-
[c.SYNC_TASK_STOP, c.LOG_PREFIX_SYNC + ': Stopping %s'],
27+
[c.SYNC_TASK_START, c.LOG_PREFIX_SYNC + 'Starting %s. Running each %s millis'],
28+
[c.SYNC_TASK_EXECUTE, c.LOG_PREFIX_SYNC + 'Running %s'],
29+
[c.SYNC_TASK_STOP, c.LOG_PREFIX_SYNC + 'Stopping %s'],
3130
// initialization / settings validation
3231
[c.SETTINGS_SPLITS_FILTER, c.LOG_PREFIX_SETTINGS + ': feature flags filtering criteria is "%s".']
3332
]);

src/logger/messages/info.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ export const codesInfo: [number, string][] = codesWarn.concat([
2121
[c.POLLING_SMART_PAUSING, c.LOG_PREFIX_SYNC_POLLING + 'Turning segments data polling %s.'],
2222
[c.POLLING_START, c.LOG_PREFIX_SYNC_POLLING + 'Starting polling'],
2323
[c.POLLING_STOP, c.LOG_PREFIX_SYNC_POLLING + 'Stopping polling'],
24-
[c.SYNC_SPLITS_FETCH_RETRY, c.LOG_PREFIX_SYNC_SPLITS + 'Retrying fetch of feature flags (attempt #%s). Reason: %s'],
2524
[c.SUBMITTERS_PUSH_FULL_QUEUE, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Flushing full %s queue and resetting timer.'],
2625
[c.SUBMITTERS_PUSH, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Pushing %s.'],
2726
[c.SUBMITTERS_PUSH_PAGE_HIDDEN, c.LOG_PREFIX_SYNC_SUBMITTERS + 'Flushing %s because page became hidden.'],

src/logger/messages/warn.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ export const codesWarn: [number, string][] = codesError.concat([
66
[c.ENGINE_VALUE_INVALID, c.LOG_PREFIX_ENGINE_VALUE + 'Value %s doesn\'t match with expected type.'],
77
[c.ENGINE_VALUE_NO_ATTRIBUTES, c.LOG_PREFIX_ENGINE_VALUE + 'Defined attribute `%s`. No attributes received.'],
88
// synchronizer
9-
[c.SYNC_MYSEGMENTS_FETCH_RETRY, c.LOG_PREFIX_SYNC_MYSEGMENTS + 'Retrying fetch of memberships (attempt #%s). Reason: %s'],
10-
[c.SYNC_SPLITS_FETCH_FAILS, c.LOG_PREFIX_SYNC_SPLITS + 'Error while doing fetch of feature flags. %s'],
9+
[c.SYNC_FETCH_RETRY, c.LOG_PREFIX_SYNC + 'Retrying fetch of %s (attempt #%s). Reason: %s'],
10+
[c.SYNC_FETCH_FAILS, c.LOG_PREFIX_SYNC + 'Error while doing fetch of %s. %s'],
1111
[c.STREAMING_PARSING_ERROR_FAILS, c.LOG_PREFIX_SYNC_STREAMING + 'Error parsing SSE error notification: %s'],
1212
[c.STREAMING_PARSING_MESSAGE_FAILS, c.LOG_PREFIX_SYNC_STREAMING + 'Error parsing SSE message notification: %s'],
1313
[c.STREAMING_FALLBACK, c.LOG_PREFIX_SYNC_STREAMING + 'Falling back to polling mode. Reason: %s'],

src/sync/__tests__/syncManagerOnline.spec.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ jest.mock('../submitters/submitterManager', () => {
1010
};
1111
});
1212

13+
// Mocked splitApi
14+
const splitApiMock = {
15+
fetchSplitChanges: jest.fn()
16+
} as any;
17+
1318
// Mocked storageManager
1419
const storageManagerMock = {
1520
splits: {
@@ -49,6 +54,7 @@ test('syncManagerOnline should start or not the submitter depending on user cons
4954
const syncManager = syncManagerOnlineFactory()({
5055
settings, // @ts-ignore
5156
storage: {},
57+
splitApi: splitApiMock,
5258
});
5359
const submitterManager = syncManager.submitterManager!;
5460

@@ -101,6 +107,7 @@ test('syncManagerOnline should syncAll a single time when sync is disabled', asy
101107
const syncManager = syncManagerOnlineFactory(() => pollingManagerMock, pushManagerFactoryMock)({
102108
settings, // @ts-ignore
103109
storage: { validateCache: () => { return Promise.resolve({ initialCacheLoad: true, lastUpdateTimestamp: undefined }); } },
110+
splitApi: splitApiMock,
104111
});
105112

106113
expect(pushManagerFactoryMock).not.toBeCalled();
@@ -170,6 +177,7 @@ test('syncManagerOnline should syncAll a single time when sync is disabled', asy
170177
const testSyncManager = syncManagerOnlineFactory(() => pollingManagerMock, pushManagerFactoryMock)({
171178
settings, // @ts-ignore
172179
storage: { validateCache: () => Promise.resolve({ initialCacheLoad: true, lastUpdateTimestamp: undefined }) },
180+
splitApi: splitApiMock,
173181
});
174182

175183
expect(pushManagerFactoryMock).toBeCalled();
@@ -188,7 +196,8 @@ test('syncManagerOnline should emit SDK_SPLITS_CACHE_LOADED if validateCache ret
188196
const params = {
189197
settings: fullSettings,
190198
storage: { validateCache: () => Promise.resolve({ initialCacheLoad: false, lastUpdateTimestamp }) },
191-
readiness: { splits: { emit: jest.fn() } }
199+
readiness: { splits: { emit: jest.fn() } },
200+
splitApi: splitApiMock,
192201
}; // @ts-ignore
193202
const syncManager = syncManagerOnlineFactory()(params);
194203

src/sync/polling/fetchers/configsFetcher.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { IDefinition, IDefinitionChangesResponse, IDefinitionCondition, IDefinitionMatcher } from '../../../dtos/types';
2-
import { IFetchDefinitionChanges, IResponse } from '../../../services/types';
2+
import { IResponse } from '../../../services/types';
33
import { IDefinitionChangesFetcher } from './types';
44
import SplitIO from '../../../../types/splitio';
5+
import { ISdkFactoryContextSync } from '../../../sdkFactory/types';
56

67
type IConfigMatcher = {
78
type: 'IS_EQUAL_TO';
@@ -54,9 +55,10 @@ export interface IConfigsResponse {
5455
* Factory of Configs fetcher.
5556
* Configs fetcher is a wrapper around `configs` API service that parses the response and handle errors.
5657
*/
57-
export function configsFetcherFactory(fetchConfigs: IFetchDefinitionChanges): IDefinitionChangesFetcher {
58+
export function configsFetcherFactory(params: ISdkFactoryContextSync): IDefinitionChangesFetcher {
59+
const fetchConfigs = params.splitApi.fetchConfigs;
5860

59-
return function configsFetcher(
61+
function configsFetcher(
6062
since: number,
6163
noCache?: boolean,
6264
till?: number,
@@ -71,7 +73,10 @@ export function configsFetcherFactory(fetchConfigs: IFetchDefinitionChanges): ID
7173
return configsPromise
7274
.then<IConfigsResponse>((resp: IResponse) => resp.json())
7375
.then(convertConfigsResponseToDefinitionChangesResponse);
74-
};
76+
}
77+
78+
configsFetcher.type = 'configs' as const;
79+
return configsFetcher;
7580

7681
}
7782

src/sync/polling/fetchers/splitChangesFetcher.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { ISettings } from '../../../types';
22
import { IDefinitionChangesResponse } from '../../../dtos/types';
3-
import { IFetchDefinitionChanges, IResponse } from '../../../services/types';
4-
import { IStorageBase } from '../../../storages/types';
3+
import { IResponse } from '../../../services/types';
54
import { FLAG_SPEC_VERSION } from '../../../utils/constants';
65
import { base } from '../../../utils/settingsValidation';
76
import { IDefinitionChangesFetcher } from './types';
8-
import { LOG_PREFIX_SYNC_SPLITS } from '../../../logger/constants';
7+
import { LOG_PREFIX_SYNC } from '../../../logger/constants';
98
import { checkIfServerSide } from '../../../utils/key';
9+
import { ISdkFactoryContextSync } from '../../../sdkFactory/types';
1010

1111
const PROXY_CHECK_INTERVAL_MILLIS_CS = 60 * 60 * 1000; // 1 hour in Client Side
1212
const PROXY_CHECK_INTERVAL_MILLIS_SS = 24 * PROXY_CHECK_INTERVAL_MILLIS_CS; // 24 hours in Server Side
@@ -20,13 +20,14 @@ function sdkEndpointOverridden(settings: ISettings) {
2020
* SplitChanges fetcher is a wrapper around `splitChanges` API service that parses the response and handle errors.
2121
*/
2222
// @TODO breaking: drop support for Split Proxy below v5.10.0 and simplify the implementation
23-
export function splitChangesFetcherFactory(fetchSplitChanges: IFetchDefinitionChanges, settings: ISettings, storage: Pick<IStorageBase, 'splits' | 'rbSegments'>): IDefinitionChangesFetcher {
23+
export function splitChangesFetcherFactory(params: ISdkFactoryContextSync): IDefinitionChangesFetcher {
2424

25+
const { splitApi: { fetchSplitChanges }, settings, storage } = params;
2526
const log = settings.log;
2627
const PROXY_CHECK_INTERVAL_MILLIS = checkIfServerSide(settings) ? PROXY_CHECK_INTERVAL_MILLIS_SS : PROXY_CHECK_INTERVAL_MILLIS_CS;
2728
let lastProxyCheckTimestamp: number | undefined;
2829

29-
return function splitChangesFetcher(
30+
function splitChangesFetcher(
3031
since: number,
3132
noCache?: boolean,
3233
till?: number,
@@ -44,7 +45,7 @@ export function splitChangesFetcherFactory(fetchSplitChanges: IFetchDefinitionCh
4445
.catch((err) => {
4546
// Handle proxy error with spec 1.3
4647
if ((!err.statusCode || err.statusCode === 400) && sdkEndpointOverridden(settings) && settings.sync.flagSpecVersion === FLAG_SPEC_VERSION) {
47-
log.error(LOG_PREFIX_SYNC_SPLITS + 'Proxy error detected. Retrying with spec 1.2. If you are using Split Proxy, please upgrade to latest version');
48+
log.error(LOG_PREFIX_SYNC + 'Proxy error detected. Retrying with spec 1.2. If you are using Split Proxy, please upgrade to latest version');
4849
lastProxyCheckTimestamp = Date.now();
4950
settings.sync.flagSpecVersion = '1.2'; // fallback to 1.2 spec
5051
return fetchSplitChanges(since, noCache, till); // retry request without rbSince
@@ -70,7 +71,7 @@ export function splitChangesFetcherFactory(fetchSplitChanges: IFetchDefinitionCh
7071

7172
// Proxy recovery
7273
if (lastProxyCheckTimestamp) {
73-
log.info(LOG_PREFIX_SYNC_SPLITS + 'Proxy error recovered');
74+
log.info(LOG_PREFIX_SYNC + 'Proxy error recovered');
7475
lastProxyCheckTimestamp = undefined;
7576
return splitChangesFetcher(-1, undefined, undefined, -1)
7677
.then((splitChangesResponse: IDefinitionChangesResponse) =>
@@ -81,6 +82,8 @@ export function splitChangesFetcherFactory(fetchSplitChanges: IFetchDefinitionCh
8182

8283
return data;
8384
});
84-
};
85+
}
8586

87+
splitChangesFetcher.type = 'feature flags' as const;
88+
return splitChangesFetcher;
8689
}

src/sync/polling/fetchers/types.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import { IDefinitionChangesResponse, ISegmentChangesResponse, IMembershipsResponse } from '../../../dtos/types';
22
import { IResponse } from '../../../services/types';
33

4-
export type IDefinitionChangesFetcher = (
4+
export type IDefinitionChangesFetcher = ((
55
since: number,
66
noCache?: boolean,
77
till?: number,
88
rbSince?: number,
99
decorator?: (promise: Promise<IResponse>) => Promise<IResponse>
10-
) => Promise<IDefinitionChangesResponse>
10+
) => Promise<IDefinitionChangesResponse>) & {
11+
type: 'configs' | 'feature flags'
12+
}
1113

1214
export type ISegmentChangesFetcher = (
1315
since: number,

src/sync/polling/pollingManagerCS.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@ import { forOwn } from '../../utils/lang';
33
import { IReadinessManager } from '../../readiness/types';
44
import { IStorageSync } from '../../storages/types';
55
import { mySegmentsSyncTaskFactory } from './syncTasks/mySegmentsSyncTask';
6-
import { splitsSyncTaskFactory } from './syncTasks/splitsSyncTask';
6+
import { definitionsSyncTaskFactory } from './syncTasks/definitionsSyncTask';
77
import { getMatching } from '../../utils/key';
88
import { SDK_SPLITS_ARRIVED, SDK_SEGMENTS_ARRIVED } from '../../readiness/constants';
99
import { POLLING_SMART_PAUSING, POLLING_START, POLLING_STOP } from '../../logger/constants';
1010
import { ISdkFactoryContextSync } from '../../sdkFactory/types';
1111
import { usesSegmentsSync } from '../../storages/AbstractSplitsCacheSync';
1212
import { SdkUpdateMetadata } from '../../../types/splitio';
13+
import { IDefinitionChangesFetcher } from './fetchers/types';
1314

1415
/**
1516
* Expose start / stop mechanism for polling data from services.
1617
* For client-side API with multiple clients.
1718
*/
1819
export function pollingManagerCSFactory(
19-
params: ISdkFactoryContextSync
20+
params: ISdkFactoryContextSync,
21+
definitionChangesFetcher: IDefinitionChangesFetcher
2022
): IPollingManagerCS {
2123

2224
const { splitApi, storage, readiness, settings } = params;
2325
const log = settings.log;
2426

25-
const splitsSyncTask = splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings, true);
27+
const definitionsSyncTask = definitionsSyncTaskFactory(definitionChangesFetcher, storage, readiness, settings, true);
2628

2729
// Map of matching keys to their corresponding MySegmentsSyncTask.
2830
const mySegmentsSyncTasks: Record<string, IMySegmentsSyncTask> = {};
@@ -44,7 +46,7 @@ export function pollingManagerCSFactory(
4446

4547
// smart pausing
4648
readiness.splits.on(SDK_SPLITS_ARRIVED, () => {
47-
if (!splitsSyncTask.isRunning()) return; // noop if not doing polling
49+
if (!definitionsSyncTask.isRunning()) return; // noop if not doing polling
4850
const usingSegments = usesSegmentsSync(storage);
4951
if (usingSegments !== mySegmentsSyncTask.isRunning()) {
5052
log.info(POLLING_SMART_PAUSING, [usingSegments ? 'ON' : 'OFF']);
@@ -71,31 +73,31 @@ export function pollingManagerCSFactory(
7173
}
7274

7375
return {
74-
splitsSyncTask,
76+
definitionsSyncTask,
7577
segmentsSyncTask: mySegmentsSyncTask,
7678

7779
// Start periodic fetching (polling)
7880
start() {
7981
log.info(POLLING_START);
8082

81-
splitsSyncTask.start();
83+
definitionsSyncTask.start();
8284
if (usesSegmentsSync(storage)) startMySegmentsSyncTasks();
8385
},
8486

8587
// Stop periodic fetching (polling)
8688
stop() {
8789
log.info(POLLING_STOP);
8890

89-
if (splitsSyncTask.isRunning()) splitsSyncTask.stop();
91+
if (definitionsSyncTask.isRunning()) definitionsSyncTask.stop();
9092
stopMySegmentsSyncTasks();
9193
},
9294

9395
// Used by SyncManager to know if running in polling mode.
94-
isRunning: splitsSyncTask.isRunning,
96+
isRunning: definitionsSyncTask.isRunning,
9597

96-
// fetch splits and segments
98+
// fetch definitions and segments
9799
syncAll() {
98-
const promises = [splitsSyncTask.execute()];
100+
const promises = [definitionsSyncTask.execute()];
99101
forOwn(mySegmentsSyncTasks, (mySegmentsSyncTask) => {
100102
promises.push(mySegmentsSyncTask.execute());
101103
});

src/sync/polling/pollingManagerSS.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,38 @@
1-
import { splitsSyncTaskFactory } from './syncTasks/splitsSyncTask';
1+
import { definitionsSyncTaskFactory } from './syncTasks/definitionsSyncTask';
22
import { segmentsSyncTaskFactory } from './syncTasks/segmentsSyncTask';
3-
import { IPollingManager, ISegmentsSyncTask, ISplitsSyncTask } from './types';
3+
import { IPollingManager, ISegmentsSyncTask, IDefinitionsSyncTask } from './types';
44
import { POLLING_START, POLLING_STOP, LOG_PREFIX_SYNC_POLLING } from '../../logger/constants';
55
import { ISdkFactoryContextSync } from '../../sdkFactory/types';
6+
import { IDefinitionChangesFetcher } from './fetchers/types';
67

78
/**
89
* Expose start / stop mechanism for pulling data from services.
910
*/
1011
export function pollingManagerSSFactory(
11-
params: ISdkFactoryContextSync
12+
params: ISdkFactoryContextSync,
13+
definitionChangesFetcher: IDefinitionChangesFetcher
1214
): IPollingManager {
1315

1416
const { splitApi, storage, readiness, settings } = params;
1517
const log = settings.log;
1618

17-
const splitsSyncTask: ISplitsSyncTask = splitsSyncTaskFactory(splitApi.fetchSplitChanges, storage, readiness, settings);
19+
const definitionsSyncTask: IDefinitionsSyncTask = definitionsSyncTaskFactory(definitionChangesFetcher, storage, readiness, settings);
1820
const segmentsSyncTask: ISegmentsSyncTask = segmentsSyncTaskFactory(splitApi.fetchSegmentChanges, storage, readiness, settings);
1921

2022
return {
21-
splitsSyncTask,
23+
definitionsSyncTask,
2224
segmentsSyncTask,
2325

2426
// Start periodic fetching (polling)
2527
start() {
2628
log.info(POLLING_START);
27-
log.debug(LOG_PREFIX_SYNC_POLLING + `Feature flags will be refreshed each ${settings.scheduler.featuresRefreshRate} millis`);
28-
log.debug(LOG_PREFIX_SYNC_POLLING + `Segments will be refreshed each ${settings.scheduler.segmentsRefreshRate} millis`);
29+
log.debug(LOG_PREFIX_SYNC_POLLING + `${definitionChangesFetcher.type} will be refreshed each ${settings.scheduler.featuresRefreshRate} millis`);
30+
log.debug(LOG_PREFIX_SYNC_POLLING + `segments will be refreshed each ${settings.scheduler.segmentsRefreshRate} millis`);
2931

30-
const startingUp = splitsSyncTask.start();
32+
const startingUp = definitionsSyncTask.start();
3133
if (startingUp) {
3234
startingUp.then(() => {
33-
if (splitsSyncTask.isRunning()) segmentsSyncTask.start();
35+
if (definitionsSyncTask.isRunning()) segmentsSyncTask.start();
3436
});
3537
}
3638
},
@@ -39,16 +41,16 @@ export function pollingManagerSSFactory(
3941
stop() {
4042
log.info(POLLING_STOP);
4143

42-
if (splitsSyncTask.isRunning()) splitsSyncTask.stop();
44+
if (definitionsSyncTask.isRunning()) definitionsSyncTask.stop();
4345
if (segmentsSyncTask.isRunning()) segmentsSyncTask.stop();
4446
},
4547

4648
// Used by SyncManager to know if running in polling mode.
47-
isRunning: splitsSyncTask.isRunning,
49+
isRunning: definitionsSyncTask.isRunning,
4850

4951
syncAll() {
50-
// fetch splits and segments. There is no need to catch this promise (`SplitChangesUpdater` is always resolved with a boolean value)
51-
return splitsSyncTask.execute().then(() => {
52+
// fetch definitions and segments. There is no need to catch this promise (`DefinitionChangesUpdater` is always resolved with a boolean value)
53+
return definitionsSyncTask.execute().then(() => {
5254
return segmentsSyncTask.execute();
5355
});
5456
}

0 commit comments

Comments
 (0)