Fix ending an already ended session #2185
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
One Line Summary
Fixes invalid REST API requests, when location is on, to both outcomes/measure and User updates with
session_time
being zero/missing in the background.Details
This is only present when location sharing is enabled in the SDK (in addition to the app and end-user allowing it) and the end-user opens the app at any point after receiving a notification. This resulted in 400 errors in the outcomes/measure case and no-op User updates that wasting resources, the later doesn't depend on receiving notifications. The outcomes/measure is also additive as the bad requests are cached and retried on app open.
Motivation
These invalid and no op request put a lot of extra load on both the device and the OneSignal backend.
Scope
Session tracking only.
Testing
Unit testing
Added a new session test and update an existing one.
Manual testing
Tested on an Android 14 emulator with our example app.
Reproducing the issue:
os__session_duration
with no session_time sent and the 400 response.Reproducing repeating bad cached values:
session_time
being relayed.Affected code checklist
Checklist
Overview
Testing
Final pass
This change is