diff --git a/spring-graphql/src/main/java/org/springframework/graphql/observation/GraphQlObservationInstrumentation.java b/spring-graphql/src/main/java/org/springframework/graphql/observation/GraphQlObservationInstrumentation.java index 9b232308..74e9af62 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/observation/GraphQlObservationInstrumentation.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/observation/GraphQlObservationInstrumentation.java @@ -35,7 +35,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.lang.Nullable; -import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; import java.util.concurrent.CompletionStage; /** @@ -152,11 +152,10 @@ public class GraphQlObservationInstrumentation extends SimpleInstrumentation { if (error != null) { dataFetcherObservation.error(error); dataFetcherObservation.stop(); - return CompletableFuture.failedStage(error); + throw new CompletionException(error); } dataFetcherObservation.stop(); - return CompletableFuture.completedStage(wrapAsDataFetcherResult(result, dataFetcherObservation)); - + return wrapAsDataFetcherResult(result, dataFetcherObservation); }); } else { diff --git a/spring-graphql/src/test/java/org/springframework/graphql/observation/GraphQlObservationInstrumentationTests.java b/spring-graphql/src/test/java/org/springframework/graphql/observation/GraphQlObservationInstrumentationTests.java index 3bef74d2..c02fbe76 100644 --- a/spring-graphql/src/test/java/org/springframework/graphql/observation/GraphQlObservationInstrumentationTests.java +++ b/spring-graphql/src/test/java/org/springframework/graphql/observation/GraphQlObservationInstrumentationTests.java @@ -68,6 +68,10 @@ class GraphQlObservationInstrumentationTests { .toGraphQlService() .execute(TestExecutionRequest.forDocument(document)); ResponseHelper response = ResponseHelper.forResponse(responseMono); + + String name = response.rawValue("bookById.name"); + assertThat(name).isEqualTo("Nineteen Eighty-Four"); + TestObservationRegistryAssert.assertThat(this.observationRegistry).hasObservationWithNameEqualTo("graphql.request") .that().hasLowCardinalityKeyValue("graphql.outcome", "SUCCESS") .hasHighCardinalityKeyValueWithKey("graphql.execution.id"); @@ -167,8 +171,10 @@ class GraphQlObservationInstrumentationTests { .toGraphQlService() .execute(TestExecutionRequest.forDocument(document)); ResponseHelper response = ResponseHelper.forResponse(responseMono); + assertThat(response.error(0).message()).isEqualTo("Resolved error: book fetching failure"); + TestObservationRegistryAssert.assertThat(this.observationRegistry).hasObservationWithNameEqualTo("graphql.request") - .that().hasLowCardinalityKeyValue("graphql.outcome", "SUCCESS") + .that().hasLowCardinalityKeyValue("graphql.outcome", "REQUEST_ERROR") .hasHighCardinalityKeyValueWithKey("graphql.execution.id"); TestObservationRegistryAssert.assertThat(this.observationRegistry)