diff --git a/opentracing-spring-extension/opentracing-spring-webflux-extension/src/main/java/org/zalando/opentracing/spring/webflux/extension/ErrorSpanDecorator.java b/opentracing-spring-extension/opentracing-spring-webflux-extension/src/main/java/org/zalando/opentracing/spring/webflux/extension/ErrorSpanDecorator.java index 34edf48c..6756f65e 100644 --- a/opentracing-spring-extension/opentracing-spring-webflux-extension/src/main/java/org/zalando/opentracing/spring/webflux/extension/ErrorSpanDecorator.java +++ b/opentracing-spring-extension/opentracing-spring-webflux-extension/src/main/java/org/zalando/opentracing/spring/webflux/extension/ErrorSpanDecorator.java @@ -1,19 +1,19 @@ package org.zalando.opentracing.spring.webflux.extension; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; +import java.util.function.Predicate; + import io.opentracing.Span; import io.opentracing.log.Fields; import io.opentracing.tag.Tags; import lombok.AllArgsConstructor; import org.apiguardian.api.API; +import static org.apiguardian.api.API.Status.*; import org.springframework.http.HttpStatus; import org.springframework.web.server.ServerWebExchange; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Predicate; - -import static org.apiguardian.api.API.Status.EXPERIMENTAL; - @API(status = EXPERIMENTAL) @AllArgsConstructor public final class ErrorSpanDecorator @@ -30,7 +30,8 @@ public void onResponse( final ServerWebExchange exchange, final Span span) { - if (predicate.test(exchange.getResponse().getStatusCode())) { + Optional statusCode = Optional.ofNullable(exchange.getResponse().getStatusCode()); + if (!statusCode.isPresent() || predicate.test(statusCode.get())) { span.setTag(Tags.ERROR, true); } }