-
Notifications
You must be signed in to change notification settings - Fork 133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Bug with logEvent callbacks not being called when unsent events are dropped #342
Conversation
@@ -1384,7 +1384,14 @@ var _generateApiPropertiesTrackingConfig = function _generateApiPropertiesTracki | |||
*/ | |||
AmplitudeClient.prototype._limitEventsQueued = function _limitEventsQueued(queue) { | |||
if (queue.length > this.options.savedMaxCount) { | |||
queue.splice(0, queue.length - this.options.savedMaxCount); | |||
const deletedEvents = queue.splice(0, queue.length - this.options.savedMaxCount); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this.options.savedMaxCount
guaranteed to be set?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, the default config for it is 1000
@@ -1684,7 +1692,7 @@ AmplitudeClient.prototype.sendEvents = function sendEvents() { | |||
// here. | |||
// } | |||
} catch (e) { | |||
// utils.log('failed upload'); | |||
// utils.log.error('failed upload'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what's this line for if commented out?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was commented out before, didn't want to touch it 😂
I just made a change to uncomment it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm! one nit and one conversation but overall makes sense.
src/amplitude-client.js
Outdated
@@ -1384,7 +1384,14 @@ var _generateApiPropertiesTrackingConfig = function _generateApiPropertiesTracki | |||
*/ | |||
AmplitudeClient.prototype._limitEventsQueued = function _limitEventsQueued(queue) { | |||
if (queue.length > this.options.savedMaxCount) { | |||
queue.splice(0, queue.length - this.options.savedMaxCount); | |||
const deletedEvents = queue.splice(0, queue.length - this.options.savedMaxCount); | |||
deletedEvents.forEach((e) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: no single letter variable
deletedEvents.forEach((e) => { | ||
if (type(e.callback) === 'function') { | ||
e.callback(0, 'No request sent', { | ||
reason: 'Event dropped because options.savedMaxCount exceeded. User may be offline or have a content blocker', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: this is relatively long compared to our other reason
strings. I appreciate the helpful direction though. How would you feel if this was in the util logs instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(not necessarily saying it should be in the util logs since I don't know how visible that might be) - and leaving this as-is might be a good idea as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe that if it's only in the util logs, users won't be able to have failed upload event handling via callback
Summary
maxSavedCount
, the oldest events will be dropped but the associated callback won't be called. This PR fixes thisChecklist