Skip to content

Commit b618cef

Browse files
committed
fix: reconnect, tests
Signed-off-by: Todd Baert <toddbaert@gmail.com>
1 parent ac5a64f commit b618cef

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed

libs/providers/flagd-web/src/lib/flagd-web-provider.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ describe(FlagdWebProvider.name, () => {
168168
const mockPromiseClient = new MockPromiseClient() as unknown as PromiseClient<typeof Service>;
169169
OpenFeature.setProvider(
170170
new FlagdWebProvider(
171-
{ host: 'fake.com' },
171+
{ host: 'fake.com', maxRetries: -1 },
172172
console,
173173
mockPromiseClient,
174174
mockCallbackClient as unknown as CallbackClient<typeof Service>
@@ -221,7 +221,7 @@ describe(FlagdWebProvider.name, () => {
221221
});
222222
});
223223

224-
describe.skip('reconnect logic', () => {
224+
describe('reconnect logic', () => {
225225
describe('Infinite maxRetries', () => {
226226
it('should attempt reconnect many times', (done) => {
227227
const mockCallbackClient = new MockCallbackClient();
@@ -239,7 +239,7 @@ describe(FlagdWebProvider.name, () => {
239239
});
240240
setTimeout(() => {
241241
try {
242-
expect(mockCallbackClient.eventStream.mock.calls.length).toBeGreaterThanOrEqual(4);
242+
expect(mockCallbackClient.eventStream.mock.calls.length).toBeGreaterThanOrEqual(3);
243243
done();
244244
} catch (err) {
245245
done(err);
@@ -274,7 +274,7 @@ describe(FlagdWebProvider.name, () => {
274274
}, RECONNECT_TIME_LIMIT);
275275
});
276276

277-
it('should NOT attempt reconnect if maxRetries (0) times', (done) => {
277+
it('should NOT attempt reconnect if maxRetries (-1) times', (done) => {
278278
const mockCallbackClient = new MockCallbackClient();
279279
OpenFeature.setProvider(
280280
new FlagdWebProvider(

libs/providers/flagd-web/src/lib/flagd-web-provider.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export const ERROR_DISABLED = 'DISABLED';
2727

2828
const EVENT_CONFIGURATION_CHANGE = 'configuration_change';
2929
const EVENT_PROVIDER_READY = 'provider_ready';
30-
const BACK_OFF_MULTIPLIER =- 3;
30+
const BACK_OFF_MULTIPLIER = 2;
3131

3232
const INITIAL_DELAY_MS = 100;
3333
type AnyFlagResolutionType = typeof AnyFlag.prototype.value.case;
@@ -108,7 +108,7 @@ export class FlagdWebProvider implements Provider {
108108
private async retryConnect(context: EvaluationContext) {
109109
this._delayMs = Math.min(this._delayMs * BACK_OFF_MULTIPLIER, this._maxDelay);
110110

111-
return new Promise<void>((resolve, reject) => {
111+
return new Promise<void>((resolve) => {
112112
this._callbackClient.eventStream(
113113
{},
114114
(message) => {
@@ -129,13 +129,13 @@ export class FlagdWebProvider implements Provider {
129129
}
130130
},
131131
() => {
132-
reject();
133132
this._logger?.error(`${FlagdWebProvider.name}: could not establish connection to flagd`);
134133
if (this._retry < this._maxRetries) {
135134
this._retry++;
136135
setTimeout(() => this.retryConnect(context), this._delayMs);
137136
} else {
138137
this._logger?.warn(`${FlagdWebProvider.name}: max retries reached`);
138+
this.events.emit(ProviderEvents.Error);
139139
}
140140
}
141141
);

0 commit comments

Comments
 (0)