diff --git a/README.md b/README.md
index 3d9f77e8c..a4bfb5036 100644
--- a/README.md
+++ b/README.md
@@ -395,7 +395,7 @@ When you build the latest code from source, you'll have access to the latest sna
net.lightbody.bmp
browsermob-core
- 2.1.11-SNAPSHOT
+ 2.1.12-SNAPSHOT
test
```
diff --git a/browsermob-core/pom.xml b/browsermob-core/pom.xml
index c2bfef853..f41138802 100644
--- a/browsermob-core/pom.xml
+++ b/browsermob-core/pom.xml
@@ -6,7 +6,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.11-SNAPSHOT
+ 2.1.12-SNAPSHOT
4.0.0
diff --git a/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java b/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java
index 572b3baef..8d8bb4430 100644
--- a/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java
+++ b/browsermob-core/src/main/java/net/lightbody/bmp/filters/HarCaptureFilter.java
@@ -51,7 +51,7 @@
public class HarCaptureFilter extends HttpsAwareFiltersAdapter {
private static final Logger log = LoggerFactory.getLogger(HarCaptureFilter.class);
- private static final StatsDClient statsDClient = new NonBlockingStatsDClient("automated_tests", getStatsDHost(), getStatsDPort());
+ private static final ThreadLocal statsDClient = new InheritableThreadLocal<>();
/**
* The currently active HAR at the time the current request is received.
@@ -174,6 +174,8 @@ public HarCaptureFilter(HttpRequest originalRequest, ChannelHandlerContext ctx,
responseCaptureFilter = null;
}
+ createStatsDClient();
+
this.har = har;
this.harEntry = new HarEntry(currentPageRef);
@@ -205,8 +207,6 @@ public HttpResponse clientToProxyRequest(HttpObject httpObject) {
HarResponse defaultHarResponse = HarCaptureUtil.createHarResponseForFailure();
defaultHarResponse.setError(HarCaptureUtil.getNoResponseReceivedErrorMessage());
harEntry.setResponse(defaultHarResponse);
- statsDClient.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
- .concat("." + harEntry.getResponse().getStatus()).concat(".client_proxy_connection_fail"));
captureQueryParameters(httpRequest);
// not capturing user agent: in many cases, it doesn't make sense to capture at the HarLog level, since the proxy could be
@@ -286,7 +286,8 @@ public void serverToProxyResponseTimedOut() {
// replace any existing HarResponse that was created if the server sent a partial response
HarResponse response = HarCaptureUtil.createHarResponseForFailure();
harEntry.setResponse(response);
- statsDClient.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
+ createStatsDClient();
+ statsDClient.get().increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".response_timeout"));
response.setError(HarCaptureUtil.getResponseTimedOutErrorMessage());
@@ -661,7 +662,8 @@ public InetSocketAddress proxyToServerResolutionStarted(String resolvingServerHo
public void proxyToServerResolutionFailed(String hostAndPort) {
HarResponse response = HarCaptureUtil.createHarResponseForFailure();
harEntry.setResponse(response);
- statsDClient.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
+ createStatsDClient();
+ statsDClient.get().increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".server_resolution_fail"));
response.setError(HarCaptureUtil.getResolutionFailedErrorMessage(hostAndPort));
@@ -704,7 +706,8 @@ public void proxyToServerConnectionStarted() {
@Override
public void proxyToServerConnectionFailed() {
HarResponse response = HarCaptureUtil.createHarResponseForFailure();
- statsDClient.increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
+ createStatsDClient();
+ statsDClient.get().increment(getProxyPrefix().concat(prepareMetric(harEntry.getRequest().getUrl()))
.concat("." + harEntry.getResponse().getStatus()).concat(".server_connection_fail"));
harEntry.setResponse(response);
@@ -777,4 +780,11 @@ public void serverToProxyResponseReceived() {
harEntry.getTimings().setReceive(0L, TimeUnit.NANOSECONDS);
}
}
+
+
+ private void createStatsDClient() {
+ if (statsDClient.get() == null) {
+ statsDClient.set(new NonBlockingStatsDClient("automated_tests", getStatsDHost(), getStatsDPort()));
+ }
+ }
}
diff --git a/browsermob-dist/pom.xml b/browsermob-dist/pom.xml
index 05ac046d0..9e42e4cb7 100644
--- a/browsermob-dist/pom.xml
+++ b/browsermob-dist/pom.xml
@@ -3,7 +3,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.11-SNAPSHOT
+ 2.1.12-SNAPSHOT
4.0.0
diff --git a/browsermob-legacy/pom.xml b/browsermob-legacy/pom.xml
index d4af72b87..a767e5440 100644
--- a/browsermob-legacy/pom.xml
+++ b/browsermob-legacy/pom.xml
@@ -5,7 +5,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.11-SNAPSHOT
+ 2.1.12-SNAPSHOT
4.0.0
diff --git a/browsermob-rest/pom.xml b/browsermob-rest/pom.xml
index a59c37d29..91c4db91c 100644
--- a/browsermob-rest/pom.xml
+++ b/browsermob-rest/pom.xml
@@ -5,7 +5,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.11-SNAPSHOT
+ 2.1.12-SNAPSHOT
4.0.0
diff --git a/mitm/pom.xml b/mitm/pom.xml
index 6bbefaa08..18c7da0a8 100644
--- a/mitm/pom.xml
+++ b/mitm/pom.xml
@@ -3,7 +3,7 @@
browsermob-proxy
net.lightbody.bmp
- 2.1.11-SNAPSHOT
+ 2.1.12-SNAPSHOT
4.0.0
diff --git a/pom.xml b/pom.xml
index 652d6ab1d..41d88d62a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
net.lightbody.bmp
browsermob-proxy
- 2.1.11-SNAPSHOT
+ 2.1.12-SNAPSHOT
browsermob-core
browsermob-legacy