Skip to content

Commit cbda9bd

Browse files
authored
Merge d100344 into b03eb7f
2 parents b03eb7f + d100344 commit cbda9bd

File tree

7 files changed

+71
-1
lines changed

7 files changed

+71
-1
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
- Add support for setting sentry-native handler_strategy ([#3671](https://github.com/getsentry/sentry-java/pull/3671))
6+
7+
### Dependencies
8+
9+
- Bump Native SDK from v0.7.8 to v0.7.16 ([#3671](https://github.com/getsentry/sentry-java/pull/3671))
10+
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0716)
11+
- [diff](https://github.com/getsentry/sentry-native/compare/0.7.2...0.7.16)
12+
313
## 7.18.1
414

515
### Fixes

sentry-android-core/api/sentry-android-core.api

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,14 @@ public final class io/sentry/android/core/LoadClass {
220220
public fun loadClass (Ljava/lang/String;Lio/sentry/ILogger;)Ljava/lang/Class;
221221
}
222222

223+
public final class io/sentry/android/core/NdkHandlerStrategy : java/lang/Enum {
224+
public static final field SENTRY_HANDLER_STRATEGY_CHAIN_AT_START Lio/sentry/android/core/NdkHandlerStrategy;
225+
public static final field SENTRY_HANDLER_STRATEGY_DEFAULT Lio/sentry/android/core/NdkHandlerStrategy;
226+
public fun getValue ()I
227+
public static fun valueOf (Ljava/lang/String;)Lio/sentry/android/core/NdkHandlerStrategy;
228+
public static fun values ()[Lio/sentry/android/core/NdkHandlerStrategy;
229+
}
230+
223231
public final class io/sentry/android/core/NdkIntegration : io/sentry/Integration, java/io/Closeable {
224232
public static final field SENTRY_NDK_CLASS_NAME Ljava/lang/String;
225233
public fun <init> (Ljava/lang/Class;)V
@@ -266,6 +274,7 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr
266274
public fun getDebugImagesLoader ()Lio/sentry/android/core/IDebugImagesLoader;
267275
public fun getFrameMetricsCollector ()Lio/sentry/android/core/internal/util/SentryFrameMetricsCollector;
268276
public fun getNativeSdkName ()Ljava/lang/String;
277+
public fun getNdkHandlerStrategy ()I
269278
public fun getProfilingTracesIntervalMillis ()I
270279
public fun getStartupCrashDurationThresholdMillis ()J
271280
public fun isAnrEnabled ()Z
@@ -310,6 +319,7 @@ public final class io/sentry/android/core/SentryAndroidOptions : io/sentry/Sentr
310319
public fun setEnableScopeSync (Z)V
311320
public fun setEnableSystemEventBreadcrumbs (Z)V
312321
public fun setFrameMetricsCollector (Lio/sentry/android/core/internal/util/SentryFrameMetricsCollector;)V
322+
public fun setNativeHandlerStrategy (Lio/sentry/android/core/NdkHandlerStrategy;)V
313323
public fun setNativeSdkName (Ljava/lang/String;)V
314324
public fun setProfilingTracesIntervalMillis (I)V
315325
public fun setReportHistoricalAnrs (Z)V
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.sentry.android.core;
2+
3+
import org.jetbrains.annotations.ApiStatus;
4+
5+
@ApiStatus.Internal
6+
public enum NdkHandlerStrategy {
7+
SENTRY_HANDLER_STRATEGY_DEFAULT(0),
8+
SENTRY_HANDLER_STRATEGY_CHAIN_AT_START(1);
9+
10+
private final int value;
11+
12+
NdkHandlerStrategy(final int value) {
13+
this.value = value;
14+
}
15+
16+
public int getValue() {
17+
return value;
18+
}
19+
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,9 @@ public final class SentryAndroidOptions extends SentryOptions {
157157
/** Turns NDK on or off. Default is enabled. */
158158
private boolean enableNdk = true;
159159

160+
@NotNull
161+
private NdkHandlerStrategy ndkHandlerStrategy =
162+
NdkHandlerStrategy.SENTRY_HANDLER_STRATEGY_DEFAULT;
160163
/**
161164
* Enable the Java to NDK Scope sync. The default value for sentry-java is disabled and enabled
162165
* for sentry-android.
@@ -472,6 +475,16 @@ public void setNativeSdkName(final @Nullable String nativeSdkName) {
472475
this.nativeSdkName = nativeSdkName;
473476
}
474477

478+
@ApiStatus.Internal
479+
public void setNativeHandlerStrategy(final @NotNull NdkHandlerStrategy ndkHandlerStrategy) {
480+
this.ndkHandlerStrategy = ndkHandlerStrategy;
481+
}
482+
483+
@ApiStatus.Internal
484+
public int getNdkHandlerStrategy() {
485+
return ndkHandlerStrategy.getValue();
486+
}
487+
475488
/**
476489
* Returns the sdk name for the sentry native ndk module.
477490
*

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,19 @@ class SentryAndroidOptionsTest {
167167
assertTrue(SentryAndroidOptions().isEnableScopeSync)
168168
}
169169

170+
@Test
171+
fun `ndk handler option defaults to default strategy`() {
172+
val sentryOptions = SentryAndroidOptions()
173+
assertEquals(NdkHandlerStrategy.SENTRY_HANDLER_STRATEGY_DEFAULT.value, sentryOptions.ndkHandlerStrategy)
174+
}
175+
176+
@Test
177+
fun `ndk handler strategy option can be changed`() {
178+
val sentryOptions = SentryAndroidOptions()
179+
sentryOptions.setNativeHandlerStrategy(NdkHandlerStrategy.SENTRY_HANDLER_STRATEGY_CHAIN_AT_START)
180+
assertEquals(NdkHandlerStrategy.SENTRY_HANDLER_STRATEGY_CHAIN_AT_START.value, sentryOptions.ndkHandlerStrategy)
181+
}
182+
170183
private class CustomDebugImagesLoader : IDebugImagesLoader {
171184
override fun loadDebugImages(): List<DebugImage>? = null
172185
override fun clearDebugImages() {}

sentry-android-ndk/sentry-native

Submodule sentry-native updated 79 files

sentry-android-ndk/src/main/jni/sentry.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,8 @@ Java_io_sentry_android_ndk_SentryNdk_initSentryNative(
255255
jmethodID native_sdk_name_mid = (*env)->GetMethodID(env, options_cls, "getNativeSdkName",
256256
"()Ljava/lang/String;");
257257

258+
jmethodID handler_strategy_mid = (*env)->GetMethodID(env, options_cls, "getNdkHandlerStrategy", "()I");
259+
258260
(*env)->DeleteLocalRef(env, options_cls);
259261

260262
char *outbox_path = NULL;
@@ -337,6 +339,9 @@ Java_io_sentry_android_ndk_SentryNdk_initSentryNative(
337339
sentry_free(native_sdk_name_str);
338340
}
339341

342+
jint handler_strategy = (jint) (*env)->CallIntMethod(env, sentry_sdk_options, handler_strategy_mid);
343+
sentry_options_set_handler_strategy(options, handler_strategy);
344+
340345
sentry_init(options);
341346
return;
342347

0 commit comments

Comments
 (0)