Skip to content

Commit c2f2cc7

Browse files
oorainilbloder
andauthored
Add data fetching environment hint to breadcrumb (#3413) (#3431)
* Add data fetching environment hint to breadcrumb (#3413) * add environment Hint to test * add changelog * format, dumpApi * fix merge issues --------- Co-authored-by: Lukas Bloder <[email protected]>
1 parent 337f79a commit c2f2cc7

File tree

5 files changed

+17
-1
lines changed

5 files changed

+17
-1
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### Features
66

77
- Publish Gradle module metadata ([#3422](https://github.com/getsentry/sentry-java/pull/3422))
8+
- Add data fetching environment hint to breadcrumb for GraphQL (#3413) ([#3431](https://github.com/getsentry/sentry-java/pull/3431))
89

910
### Fixes
1011

sentry-graphql/src/main/java/io/sentry/graphql/SentryInstrumentation.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@
1818
import graphql.schema.GraphQLObjectType;
1919
import graphql.schema.GraphQLOutputType;
2020
import io.sentry.Breadcrumb;
21+
import io.sentry.Hint;
2122
import io.sentry.IScopes;
2223
import io.sentry.ISpan;
2324
import io.sentry.NoOpScopes;
2425
import io.sentry.Sentry;
2526
import io.sentry.SentryIntegrationPackageStorage;
2627
import io.sentry.SpanStatus;
28+
import io.sentry.TypeCheckHint;
2729
import io.sentry.util.StringUtils;
2830
import java.util.ArrayList;
2931
import java.util.Arrays;
@@ -300,13 +302,16 @@ private boolean isIgnored(final @Nullable String errorType) {
300302
return environment -> {
301303
final @Nullable ExecutionStepInfo executionStepInfo = environment.getExecutionStepInfo();
302304
if (executionStepInfo != null) {
305+
Hint hint = new Hint();
306+
hint.set(TypeCheckHint.GRAPHQL_DATA_FETCHING_ENVIRONMENT, environment);
303307
scopesFromContext(parameters.getExecutionContext().getGraphQLContext())
304308
.addBreadcrumb(
305309
Breadcrumb.graphqlDataFetcher(
306310
StringUtils.toString(executionStepInfo.getPath()),
307311
GraphqlStringUtils.fieldToString(executionStepInfo.getField()),
308312
GraphqlStringUtils.typeToString(executionStepInfo.getType()),
309-
GraphqlStringUtils.objectTypeToString(executionStepInfo.getObjectType())));
313+
GraphqlStringUtils.objectTypeToString(executionStepInfo.getObjectType())),
314+
hint);
310315
}
311316
final TracingState tracingState = parameters.getInstrumentationState();
312317
final ISpan transaction = tracingState.getTransaction();

sentry-graphql/src/test/kotlin/io/sentry/graphql/SentryInstrumentationAnotherTest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ import graphql.schema.GraphQLObjectType
2828
import graphql.schema.GraphQLScalarType
2929
import graphql.schema.GraphQLSchema
3030
import io.sentry.Breadcrumb
31+
import io.sentry.Hint
3132
import io.sentry.IScopes
3233
import io.sentry.Sentry
3334
import io.sentry.SentryOptions
3435
import io.sentry.SentryTracer
3536
import io.sentry.TransactionContext
37+
import io.sentry.TypeCheckHint
3638
import io.sentry.graphql.ExceptionReporter.ExceptionDetails
3739
import io.sentry.graphql.SentryInstrumentation.SENTRY_EXCEPTIONS_CONTEXT_KEY
3840
import io.sentry.graphql.SentryInstrumentation.TracingState
@@ -245,6 +247,10 @@ class SentryInstrumentationAnotherTest {
245247
assertEquals("myFieldName", breadcrumb.data["field"])
246248
assertEquals("MyResponseType", breadcrumb.data["type"])
247249
assertEquals("QUERY", breadcrumb.data["object_type"])
250+
},
251+
org.mockito.kotlin.check<Hint> { hint ->
252+
val environment = hint.getAs(TypeCheckHint.GRAPHQL_DATA_FETCHING_ENVIRONMENT, DataFetchingEnvironment::class.java)
253+
assertNotNull(environment)
248254
}
249255
)
250256
}

sentry/api/sentry.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3343,6 +3343,7 @@ public final class io/sentry/TypeCheckHint {
33433343
public static final field ANDROID_VIEW Ljava/lang/String;
33443344
public static final field APOLLO_REQUEST Ljava/lang/String;
33453345
public static final field APOLLO_RESPONSE Ljava/lang/String;
3346+
public static final field GRAPHQL_DATA_FETCHING_ENVIRONMENT Ljava/lang/String;
33463347
public static final field GRAPHQL_HANDLER_PARAMETERS Ljava/lang/String;
33473348
public static final field JUL_LOG_RECORD Ljava/lang/String;
33483349
public static final field LOG4J_LOG_EVENT Ljava/lang/String;

sentry/src/main/java/io/sentry/TypeCheckHint.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ public final class TypeCheckHint {
5555
/** Used for GraphQl handler exceptions. */
5656
public static final String GRAPHQL_HANDLER_PARAMETERS = "graphql:handlerParameters";
5757

58+
/** Used for GraphQl data fetcher breadcrumbs. */
59+
public static final String GRAPHQL_DATA_FETCHING_ENVIRONMENT = "graphql:dataFetchingEnvironment";
60+
5861
/** Used for JUL breadcrumbs. */
5962
public static final String JUL_LOG_RECORD = "jul:logRecord";
6063

0 commit comments

Comments
 (0)