Skip to content

Commit 4365546

Browse files
authored
Merge branch 'main' into dependabot/github_actions/github/codeql-action-3.28.1
2 parents 4404fd5 + ce2672f commit 4365546

File tree

24 files changed

+389
-440
lines changed

24 files changed

+389
-440
lines changed

.craft.yml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,15 @@ targets:
4343
maven:io.sentry:sentry-openfeign:
4444
maven:io.sentry:sentry-opentelemetry-agent:
4545
maven:io.sentry:sentry-opentelemetry-agentcustomization:
46+
maven:io.sentry:sentry-opentelemetry-agentless:
47+
maven:io.sentry:sentry-opentelemetry-agentless-spring:
48+
maven:io.sentry:sentry-opentelemetry-bootstrap:
4649
maven:io.sentry:sentry-opentelemetry-core:
47-
# maven:io.sentry:sentry-opentelemetry-agentless:
48-
# maven:io.sentry:sentry-opentelemetry-agentless-spring:
4950
maven:io.sentry:sentry-apollo:
5051
maven:io.sentry:sentry-jdbc:
5152
maven:io.sentry:sentry-graphql:
52-
# maven:io.sentry:sentry-graphql-core:
53-
# maven:io.sentry:sentry-graphql-22:
53+
maven:io.sentry:sentry-graphql-22:
54+
maven:io.sentry:sentry-graphql-core:
5455
maven:io.sentry:sentry-quartz:
5556
maven:io.sentry:sentry-okhttp:
5657
maven:io.sentry:sentry-android-navigation:

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
* @adinauer @romtsn @stefanosiano @markushi
1+
* @adinauer @romtsn @stefanosiano @markushi @lcian

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
run: make preMerge
3636

3737
- name: Upload coverage to Codecov
38-
uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # pin@v4
38+
uses: codecov/codecov-action@1e68e06f1dbfde0e4cefc87efeba9e4643565303 # pin@v4
3939
with:
4040
name: sentry-java
4141
fail_ci_if_error: false

CHANGELOG.md

Lines changed: 201 additions & 317 deletions
Large diffs are not rendered by default.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2019-2024 Sentry
3+
Copyright (c) 2019-2025 Sentry
44
Copyright (c) 2015 Salomon BRYS for Android ANRWatchDog
55

66
Permission is hereby granted, free of charge, to any person obtaining a copy

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ android.useAndroidX=true
1313
android.defaults.buildfeatures.buildconfig=true
1414

1515
# Release information
16-
versionName=8.0.0-rc.4
16+
versionName=8.0.0
1717

1818
# Override the SDK name on native crashes on Android
1919
sentryAndroidSdkName=sentry.native.android

sentry-android-core/src/main/java/io/sentry/android/core/AnrV2EventProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,7 @@ private void mergeUser(final @NotNull SentryBaseEvent event) {
580580
if (user.getId() == null) {
581581
user.setId(getDeviceId());
582582
}
583-
if (user.getIpAddress() == null) {
583+
if (user.getIpAddress() == null && options.isSendDefaultPii()) {
584584
user.setIpAddress(IpAddressUtils.DEFAULT_IP_ADDRESS);
585585
}
586586
}

sentry-android-core/src/main/java/io/sentry/android/core/DefaultAndroidEventProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ private void mergeUser(final @NotNull SentryBaseEvent event) {
156156
if (user.getId() == null) {
157157
user.setId(Installation.id(context));
158158
}
159-
if (user.getIpAddress() == null) {
159+
if (user.getIpAddress() == null && options.isSendDefaultPii()) {
160160
user.setIpAddress(IpAddressUtils.DEFAULT_IP_ADDRESS);
161161
}
162162
}

sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,10 @@ private static boolean readBool(
475475
private static @NotNull Double readDouble(
476476
final @NotNull Bundle metadata, final @NotNull ILogger logger, final @NotNull String key) {
477477
// manifest meta-data only reads float
478-
final Double value = ((Number) metadata.getFloat(key, metadata.getInt(key, -1))).doubleValue();
478+
double value = ((Float) metadata.getFloat(key, -1)).doubleValue();
479+
if (value == -1) {
480+
value = ((Integer) metadata.getInt(key, -1)).doubleValue();
481+
}
479482
logger.log(SentryLevel.DEBUG, key + " read: " + value);
480483
return value;
481484
}

sentry-android-core/src/test/java/io/sentry/android/core/AnrV2EventProcessorTest.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,20 @@ class AnrV2EventProcessorTest {
8585
lateinit var context: Context
8686
val options = SentryAndroidOptions().apply {
8787
setLogger(NoOpLogger.getInstance())
88-
isSendDefaultPii = true
8988
}
9089

9190
fun getSut(
9291
dir: TemporaryFolder,
9392
currentSdk: Int = Build.VERSION_CODES.LOLLIPOP,
9493
populateScopeCache: Boolean = false,
9594
populateOptionsCache: Boolean = false,
96-
replayErrorSampleRate: Double? = null
95+
replayErrorSampleRate: Double? = null,
96+
isSendDefaultPii: Boolean = true
9797
): AnrV2EventProcessor {
9898
options.cacheDirPath = dir.newFolder().absolutePath
9999
options.environment = "release"
100+
options.isSendDefaultPii = isSendDefaultPii
101+
100102
whenever(buildInfo.sdkInfoVersion).thenReturn(currentSdk)
101103
whenever(buildInfo.isEmulator).thenReturn(true)
102104

@@ -278,6 +280,7 @@ class AnrV2EventProcessorTest {
278280
// user
279281
assertEquals("bot", processed.user!!.username)
280282
assertEquals("[email protected]", processed.user!!.id)
283+
assertEquals("{{auto}}", processed.user!!.ipAddress)
281284
// trace
282285
assertEquals("ui.load", processed.contexts.trace!!.operation)
283286
// tags
@@ -304,6 +307,13 @@ class AnrV2EventProcessorTest {
304307
assertEquals("Google Chrome", processed.contexts.browser!!.name)
305308
}
306309

310+
@Test
311+
fun `when backfillable event is enrichable, does not backfill user ip`() {
312+
val hint = HintUtils.createWithTypeCheckHint(BackfillableHint())
313+
val processed = processEvent(hint, isSendDefaultPii = false, populateScopeCache = true)
314+
assertNull(processed.user!!.ipAddress)
315+
}
316+
307317
@Test
308318
fun `when backfillable event is enrichable, backfills serialized options data`() {
309319
val hint = HintUtils.createWithTypeCheckHint(BackfillableHint())
@@ -617,14 +627,16 @@ class AnrV2EventProcessorTest {
617627
hint: Hint,
618628
populateScopeCache: Boolean = false,
619629
populateOptionsCache: Boolean = false,
630+
isSendDefaultPii: Boolean = true,
620631
configureEvent: SentryEvent.() -> Unit = {}
621632
): SentryEvent {
622633
val original = SentryEvent().apply(configureEvent)
623634

624635
val processor = fixture.getSut(
625636
tmpDir,
626637
populateScopeCache = populateScopeCache,
627-
populateOptionsCache = populateOptionsCache
638+
populateOptionsCache = populateOptionsCache,
639+
isSendDefaultPii = isSendDefaultPii
628640
)
629641
return processor.process(original, hint)!!
630642
}

0 commit comments

Comments
 (0)