Skip to content

Commit 30e8635

Browse files
authored
Add the session header to every Docker request (#5145)
To improve tracing and other operations, we add current session's id to every Docker request that we are making.
1 parent cbccd49 commit 30e8635

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@
2020
import org.rnorth.ducttape.ratelimits.RateLimiter;
2121
import org.rnorth.ducttape.ratelimits.RateLimiterBuilder;
2222
import org.rnorth.ducttape.unreliables.Unreliables;
23+
import org.testcontainers.DockerClientFactory;
2324
import org.testcontainers.utility.TestcontainersConfiguration;
2425

2526
import java.net.URI;
2627
import java.util.ArrayList;
28+
import java.util.Collections;
2729
import java.util.Comparator;
2830
import java.util.HashSet;
2931
import java.util.List;
@@ -282,7 +284,10 @@ public static DockerClient getClientForConfig(TransportConfig transportConfig) {
282284
.withDockerHost(transportConfig.getDockerHost().toString())
283285
.build()
284286
),
285-
dockerHttpClient
287+
new HeadersAddingDockerHttpClient(
288+
dockerHttpClient,
289+
Collections.singletonMap("x-tc-sid", DockerClientFactory.SESSION_ID)
290+
)
286291
);
287292
}
288293

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.testcontainers.dockerclient;
2+
3+
import com.github.dockerjava.transport.DockerHttpClient;
4+
import lombok.RequiredArgsConstructor;
5+
import lombok.ToString;
6+
import lombok.experimental.Delegate;
7+
8+
import java.io.Closeable;
9+
import java.util.Map;
10+
11+
@RequiredArgsConstructor
12+
@ToString
13+
class HeadersAddingDockerHttpClient implements DockerHttpClient {
14+
15+
@Delegate(types = Closeable.class)
16+
final DockerHttpClient delegate;
17+
18+
final Map<String, String> headers;
19+
20+
@Override
21+
public Response execute(Request request) {
22+
request = Request.builder().from(request)
23+
.putAllHeaders(headers)
24+
.build();
25+
return delegate.execute(request);
26+
}
27+
}

0 commit comments

Comments
 (0)