Skip to content

Commit 38ba6fb

Browse files
committed
feat: Add idempotency key to Otel events
1 parent 052ddfa commit 38ba6fb

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/debug/internal/logging/otel/attributes/OneSignalOtelFieldsPerEvent.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.onesignal.core.internal.config.ConfigModelStore
66
import com.onesignal.core.internal.time.ITime
77
import com.onesignal.user.internal.identity.IdentityModelStore
88
import com.squareup.wire.internal.toUnmodifiableMap
9+
import java.util.UUID
910

1011
internal class OneSignalOtelFieldsPerEvent(
1112
private val _applicationService: IApplicationService,
@@ -16,6 +17,8 @@ internal class OneSignalOtelFieldsPerEvent(
1617
fun getAttributes(): Map<String, String> {
1718
val attributes: MutableMap<String, String> = mutableMapOf()
1819

20+
attributes.put("log.record.uid", recordId.toString())
21+
1922
attributes
2023
.putIfValueNotNull(
2124
"$OS_OTEL_NAMESPACE.onesignal_id",
@@ -60,4 +63,9 @@ internal class OneSignalOtelFieldsPerEvent(
6063
// https://opentelemetry.io/docs/specs/semconv/general/attributes/#general-thread-attributes
6164
private val currentThreadName: String get() =
6265
Thread.currentThread().name
66+
67+
// idempotency so the backend can filter on duplicate events
68+
// https://opentelemetry.io/docs/specs/semconv/general/logs/#general-log-identification-attributes
69+
private val recordId: UUID get() =
70+
UUID.randomUUID()
6371
}

0 commit comments

Comments
 (0)