Skip to content

Commit ce816d3

Browse files
authored
Merge branch 'main' into feat/otlp
2 parents b88e131 + 70118e9 commit ce816d3

File tree

3 files changed

+33
-5
lines changed

3 files changed

+33
-5
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22

33
## Unreleased
44

5+
### Features
6+
57
- Create `sentry-opentelemetry-otlp` and `sentry-opentelemetry-otlp-spring` modules for combining OpenTelemetry SDK OTLP export with Sentry SDK ([#5100](https://github.com/getsentry/sentry-java/pull/5100))
68
- OpenTelemetry is configured to send spans to Sentry directly using an OTLP endpoint.
79
- Sentry only uses trace and span ID from OpenTelemetry (via `OpenTelemetryOtlpEventProcessor`) but will not send spans through OpenTelemetry nor use OpenTelemetry `Context` for `Scopes` propagation.
810
- See the OTLP setup docs for [Java](https://docs.sentry.io/platforms/java/opentelemetry/setup/otlp/) and [Spring Boot](https://docs.sentry.io/platforms/java/guides/spring-boot/opentelemetry/setup/otlp/) for installation and configuration instructions.
911

12+
### Fixes
13+
14+
- Fix crash when unregistering `SystemEventsBroadcastReceiver` with try-catch block. ([#5106](https://github.com/getsentry/sentry-java/pull/5106))
15+
1016
## 8.33.0
1117

1218
### Features

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,13 @@ private void scheduleUnregisterReceiver() {
203203
}
204204

205205
try {
206-
options.getExecutorService().submit(() -> unregisterReceiver());
206+
options.getExecutorService().submit(() -> unregisterReceiver(options));
207207
} catch (RejectedExecutionException e) {
208-
unregisterReceiver();
208+
unregisterReceiver(options);
209209
}
210210
}
211211

212-
private void unregisterReceiver() {
212+
private void unregisterReceiver(final @NotNull SentryAndroidOptions options) {
213213
final @Nullable SystemEventsBroadcastReceiver receiverRef;
214214
try (final @NotNull ISentryLifecycleToken ignored = receiverLock.acquire()) {
215215
isStopped = true;
@@ -218,7 +218,14 @@ private void unregisterReceiver() {
218218
}
219219

220220
if (receiverRef != null) {
221-
context.unregisterReceiver(receiverRef);
221+
try {
222+
context.unregisterReceiver(receiverRef);
223+
} catch (Throwable exception) {
224+
options
225+
.getLogger()
226+
.log(
227+
SentryLevel.ERROR, exception, "Failed to unregister SystemEventsBroadcastReceiver");
228+
}
222229
}
223230
}
224231

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class SystemEventsBreadcrumbsIntegrationTest {
5252
lateinit var shadowActivityManager: ShadowActivityManager
5353

5454
fun getSut(
55+
contextForSut: Context = context,
5556
enableSystemEventBreadcrumbs: Boolean = true,
5657
enableSystemEventBreadcrumbsExtras: Boolean = false,
5758
executorService: ISentryExecutorService = ImmediateExecutorService(),
@@ -64,7 +65,7 @@ class SystemEventsBreadcrumbsIntegrationTest {
6465
this.executorService = executorService
6566
}
6667
return SystemEventsBreadcrumbsIntegration(
67-
context,
68+
contextForSut,
6869
SystemEventsBreadcrumbsIntegration.getDefaultActions().toTypedArray(),
6970
handler,
7071
)
@@ -313,6 +314,20 @@ class SystemEventsBreadcrumbsIntegrationTest {
313314
assertFalse(fixture.options.isEnableSystemEventBreadcrumbs)
314315
}
315316

317+
@Test
318+
fun `Do not crash if receiver already unregistered`() {
319+
val realContext = ApplicationProvider.getApplicationContext<Context>()
320+
val sut = fixture.getSut(realContext)
321+
322+
sut.register(fixture.scopes, fixture.options)
323+
324+
realContext.unregisterReceiver(sut.receiver)
325+
326+
val result = runCatching { sut.onBackground() }
327+
328+
assertFalse(result.isFailure)
329+
}
330+
316331
@Test
317332
fun `when str has full package, return last string after dot`() {
318333
val sut = fixture.getSut()

0 commit comments

Comments
 (0)