diff --git a/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSampler.java b/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSampler.java index 1aec8fc78..8b1545c6e 100644 --- a/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSampler.java +++ b/spring-cloud-sleuth-brave/src/main/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSampler.java @@ -34,6 +34,10 @@ abstract class SkipPatternSampler implements SamplerFunction { @Override public final Boolean trySample(HttpRequest request) { String url = request.path(); + if (url == null) { + return null; + } + boolean shouldSkip = pattern().matcher(url).matches(); if (shouldSkip) { return false; diff --git a/spring-cloud-sleuth-brave/src/test/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSamplerTests.java b/spring-cloud-sleuth-brave/src/test/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSamplerTests.java index 7c8325332..047563a57 100644 --- a/spring-cloud-sleuth-brave/src/test/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSamplerTests.java +++ b/spring-cloud-sleuth-brave/src/test/java/org/springframework/cloud/sleuth/brave/instrument/web/SkipPatternSamplerTests.java @@ -86,4 +86,16 @@ public class SkipPatternSamplerTests { then(sampler.trySample(this.request)).isFalse(); } + @Test + public void should_delegate_sampling_decision_if_path_is_null() { + BDDMockito.given(this.request.path()).willReturn(null); + SkipPatternSampler sampler = new SkipPatternSampler() { + @Override + Pattern getPattern() { + return Pattern.compile("foo"); + } + }; + + then(sampler.trySample(this.request)).isNull(); + } }