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