Merge branch '2.1.x'
This commit is contained in:
6
pom.xml
6
pom.xml
@@ -244,6 +244,12 @@
|
||||
<version>3.8.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.jcip</groupId>
|
||||
<artifactId>jcip-annotations</artifactId>
|
||||
<version>1.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
||||
@@ -336,6 +336,11 @@
|
||||
<version>20.0</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.jcip</groupId>
|
||||
<artifactId>jcip-annotations</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<profiles>
|
||||
|
||||
@@ -83,7 +83,11 @@ enum MessageHeaderPropagation
|
||||
accessor.removeHeader(keyToRemove);
|
||||
if (accessor instanceof NativeMessageHeaderAccessor) {
|
||||
NativeMessageHeaderAccessor nativeAccessor = (NativeMessageHeaderAccessor) accessor;
|
||||
nativeAccessor.removeNativeHeader(keyToRemove);
|
||||
if (accessor.isMutable()) {
|
||||
// 1184 native headers can be an immutable map
|
||||
ensureNativeHeadersAreMutable(nativeAccessor)
|
||||
.removeNativeHeader(keyToRemove);
|
||||
}
|
||||
}
|
||||
else {
|
||||
Object nativeHeaders = accessor
|
||||
@@ -95,6 +99,26 @@ enum MessageHeaderPropagation
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Since for some reason, the native headers sometimes are immutable even though the
|
||||
* accessor says that the headers are mutable, then we have to ensure their
|
||||
* mutability. We do so by first making a mutable copy of the native headers, then by
|
||||
* removing the native headers from the headers map and replacing them with a mutable
|
||||
* copy. Workaround for #1184
|
||||
* @param nativeAccessor accessor containing (or not) native headers
|
||||
* @return modified accessor
|
||||
*/
|
||||
private static NativeMessageHeaderAccessor ensureNativeHeadersAreMutable(
|
||||
NativeMessageHeaderAccessor nativeAccessor) {
|
||||
Map<String, List<String>> nativeHeaderMap = nativeAccessor.toNativeHeaderMap();
|
||||
nativeHeaderMap = nativeHeaderMap instanceof LinkedMultiValueMap ? nativeHeaderMap
|
||||
: new LinkedMultiValueMap<>(nativeHeaderMap);
|
||||
nativeAccessor.removeHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS);
|
||||
nativeAccessor.setHeader(NativeMessageHeaderAccessor.NATIVE_HEADERS,
|
||||
nativeHeaderMap);
|
||||
return nativeAccessor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void put(MessageHeaderAccessor accessor, String key, String value) {
|
||||
try {
|
||||
@@ -116,7 +140,7 @@ enum MessageHeaderPropagation
|
||||
accessor.setHeader(key, value);
|
||||
if (accessor instanceof NativeMessageHeaderAccessor) {
|
||||
NativeMessageHeaderAccessor nativeAccessor = (NativeMessageHeaderAccessor) accessor;
|
||||
nativeAccessor.setNativeHeader(key, value);
|
||||
ensureNativeHeadersAreMutable(nativeAccessor).setNativeHeader(key, value);
|
||||
}
|
||||
else {
|
||||
Object nativeHeaders = accessor
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import brave.Span;
|
||||
import brave.Tracing;
|
||||
import brave.sampler.Sampler;
|
||||
import net.jcip.annotations.NotThreadSafe;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.junit.Before;
|
||||
@@ -47,6 +48,7 @@ import static org.awaitility.Awaitility.await;
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(classes = { ScheduledTestConfiguration.class })
|
||||
@DirtiesContext
|
||||
@NotThreadSafe
|
||||
public class TracingOnScheduledTests {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
|
||||
"https://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
|
||||
<suppressions>
|
||||
<suppress files=".*/test/.*" checks="JavadocVariable"/>
|
||||
<suppress files=".*FinishedSpanHandlerTests.*" checks="LineLengthCheck"/>
|
||||
<suppress files=".*GrpcTracingIntegrationTests.*" checks="LineLengthCheck"/>
|
||||
<suppress files=".*IgnoreAutoConfiguredSkipPatternsIntegrationTests.*" checks="LineLengthCheck"/>
|
||||
|
||||
Reference in New Issue
Block a user