Merge branch '2.1.x'

This commit is contained in:
Marcin Grzejszczak
2019-04-02 14:38:01 +02:00
5 changed files with 40 additions and 2 deletions

View File

@@ -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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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"/>