Skip to content

Commit 1ab8dcc

Browse files
committed
migration cleaning up invalid cached outcomes
Clean up invalid cached os__session_duration outcome records with zero session_time produced in SDK versions 5.1.15 to 5.1.20 so we stop sending these requests to the backend.
1 parent 3d3c5f2 commit 1ab8dcc

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/session/internal/outcomes/impl/OutcomeEventsRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.onesignal.session.internal.influence.Influence
88
import com.onesignal.session.internal.influence.InfluenceChannel
99
import com.onesignal.session.internal.influence.InfluenceType
1010
import com.onesignal.session.internal.influence.InfluenceType.Companion.fromString
11+
import com.onesignal.session.internal.outcomes.migrations.RemoveZeroSessionTimeRecords
1112
import kotlinx.coroutines.Dispatchers
1213
import kotlinx.coroutines.withContext
1314
import org.json.JSONArray
@@ -101,6 +102,7 @@ internal class OutcomeEventsRepository(
101102
override suspend fun getAllEventsToSend(): List<OutcomeEventParams> {
102103
val events: MutableList<OutcomeEventParams> = ArrayList()
103104
withContext(Dispatchers.IO) {
105+
RemoveZeroSessionTimeRecords.run(_databaseProvider)
104106
_databaseProvider.os.query(OutcomeEventsTable.TABLE_NAME) { cursor ->
105107
if (cursor.moveToFirst()) {
106108
do {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.onesignal.session.internal.outcomes.migrations
2+
3+
import com.onesignal.core.internal.database.IDatabaseProvider
4+
import com.onesignal.session.internal.outcomes.impl.OutcomeEventsTable
5+
6+
/**
7+
* Purpose: Clean up invalid cached os__session_duration outcome records
8+
* with zero session_time produced in SDK versions 5.1.15 to 5.1.20 so we stop
9+
* sending these requests to the backend.
10+
*
11+
* Issue: SessionService.backgroundRun() didn't account for it being run more
12+
* than one time in the background, when this happened it would create a
13+
* outcome record with zero time which is invalid.
14+
*/
15+
object RemoveZeroSessionTimeRecords {
16+
fun run(databaseProvider: IDatabaseProvider) {
17+
databaseProvider.os.delete(
18+
OutcomeEventsTable.TABLE_NAME,
19+
OutcomeEventsTable.COLUMN_NAME_NAME + " = \"os__session_duration\"" +
20+
" AND " + OutcomeEventsTable.COLUMN_NAME_SESSION_TIME + " = 0",
21+
null,
22+
)
23+
}
24+
}

0 commit comments

Comments
 (0)