Skip to content
This repository was archived by the owner on May 30, 2024. It is now read-only.

Commit de2e95a

Browse files
prepare 5.10.3 release (#171)
1 parent 5543ad4 commit de2e95a

File tree

5 files changed

+35
-41
lines changed

5 files changed

+35
-41
lines changed

event_processor.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const LRUCache = require('lrucache');
22
const request = require('request');
3+
const uuidv4 = require('uuid/v4');
34
const EventSummarizer = require('./event_summarizer');
45
const UserFilter = require('./user_filter');
56
const errors = require('./errors');
@@ -188,16 +189,16 @@ function EventProcessor(sdkKey, config, errorReporter) {
188189

189190
config.logger.debug('Flushing %d events', worklist.length);
190191

191-
tryPostingEvents(worklist, resolve, reject, true);
192+
tryPostingEvents(worklist, uuidv4(), resolve, reject, true);
192193
}), callback);
193194
};
194195

195-
function tryPostingEvents(events, resolve, reject, canRetry) {
196+
function tryPostingEvents(events, payloadId, resolve, reject, canRetry) {
196197
const retryOrReject = err => {
197198
if (canRetry) {
198199
config.logger && config.logger.warn('Will retry posting events after 1 second');
199200
setTimeout(() => {
200-
tryPostingEvents(events, resolve, reject, false);
201+
tryPostingEvents(events, payloadId, resolve, reject, false);
201202
}, 1000);
202203
} else {
203204
reject(err);
@@ -210,7 +211,8 @@ function EventProcessor(sdkKey, config, errorReporter) {
210211
headers: {
211212
'Authorization': sdkKey,
212213
'User-Agent': config.userAgent,
213-
'X-LaunchDarkly-Event-Schema': '3'
214+
'X-LaunchDarkly-Event-Schema': '3',
215+
'X-LaunchDarkly-Payload-ID': payloadId
214216
},
215217
json: true,
216218
body: events,

package-lock.json

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"request-etag": "^2.0.3",
3535
"semver": "^6.3.0",
3636
"tunnel": "0.0.6",
37+
"uuid": "^3.3.3",
3738
"winston": "2.4.1",
3839
"yaml": "1.0.1"
3940
},

test.js

Lines changed: 0 additions & 32 deletions
This file was deleted.

test/event_processor-test.js

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,24 @@ describe('EventProcessor', () => {
483483
});
484484
}));
485485

486+
it('sends unique payload IDs', eventsServerTest(async s => {
487+
await withEventProcessor(defaultConfig, s, async ep => {
488+
const e = { kind: 'identify', creationDate: 1000, user: user };
489+
ep.sendEvent(e);
490+
await ep.flush();
491+
ep.sendEvent(e);
492+
await ep.flush();
493+
494+
const req0 = await s.nextRequest();
495+
const req1 = await s.nextRequest();
496+
const id0 = req0.headers['x-launchdarkly-payload-id'];
497+
const id1 = req1.headers['x-launchdarkly-payload-id'];
498+
expect(id0).toBeTruthy();
499+
expect(id1).toBeTruthy();
500+
expect(id0).not.toEqual(id1);
501+
});
502+
}));
503+
486504
function verifyUnrecoverableHttpError(status) {
487505
return eventsServerTest(async s => {
488506
s.forMethodAndPath('post', '/bulk', TestHttpHandlers.respond(status));
@@ -510,13 +528,18 @@ describe('EventProcessor', () => {
510528
await expect(ep.flush()).rejects.toThrow('error ' + status);
511529

512530
expect(s.requestCount()).toEqual(2);
513-
await s.nextRequest();
514-
await s.nextRequest();
531+
const req0 = await s.nextRequest();
532+
const req1 = await s.nextRequest();
533+
expect(req0.body).toEqual(req1.body);
534+
const id0 = req0.headers['x-launchdarkly-payload-id'];
535+
expect(req1.headers['x-launchdarkly-payload-id']).toEqual(id0);
515536

516537
s.forMethodAndPath('post', '/bulk', TestHttpHandlers.respond(200));
517538
ep.sendEvent(e);
518539
await ep.flush();
519540
expect(s.requestCount()).toEqual(3);
541+
const req2 = await s.nextRequest();
542+
expect(req2.headers['x-launchdarkly-payload-id']).not.toEqual(id0);
520543
});
521544
});
522545
}

0 commit comments

Comments
 (0)