diff options
author | Marc CARRE <carre.marc@gmail.com> | 2018-03-24 03:51:35 +0000 |
---|---|---|
committer | Marc CARRE <carre.marc@gmail.com> | 2018-03-24 04:56:26 +0000 |
commit | 6c9f7563e89631ecfae796ab4bdf2ee9c6085a26 (patch) | |
tree | 6981fad3158632c7a5c1d71eeea74b462438d011 /exporters | |
parent | 6293675bc548b209aaad0838f8ea2f86e6cfaad0 (diff) | |
download | opencensus-java-6c9f7563e89631ecfae796ab4bdf2ee9c6085a26.tar.gz |
Wait for Jaeger to be able to handle HTTP requests, by retrying on unexpected connection reset socket exceptions.
Jaeger seems to accept connections even though it is not yet ready to handle HTTP requests.
Without this change, the integration test fails with:
```
io.opencensus.exporter.trace.jaeger.JaegerExporterHandlerIntegrationTest > exportToJaeger FAILED
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:197)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:275)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:721)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:664)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:692)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1389)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
at com.google.api.client.http.javanet.NetHttpResponse.<init>(NetHttpResponse.java:37)
at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:105)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:981)
at io.opencensus.exporter.trace.jaeger.JaegerExporterHandlerIntegrationTest.waitForJaegerToStart(JaegerExporterHandlerIntegrationTest.java:239)
at io.opencensus.exporter.trace.jaeger.JaegerExporterHandlerIntegrationTest.exportToJaeger(JaegerExporterHandlerIntegrationTest.java:82)
```
With this change, it logs the above for information/debugging, but
carries on, and eventually, suceeds.
Diffstat (limited to 'exporters')
-rw-r--r-- | exporters/trace/jaeger/src/test/java/io/opencensus/exporter/trace/jaeger/JaegerExporterHandlerIntegrationTest.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/exporters/trace/jaeger/src/test/java/io/opencensus/exporter/trace/jaeger/JaegerExporterHandlerIntegrationTest.java b/exporters/trace/jaeger/src/test/java/io/opencensus/exporter/trace/jaeger/JaegerExporterHandlerIntegrationTest.java index 7884f278..1ebf9327 100644 --- a/exporters/trace/jaeger/src/test/java/io/opencensus/exporter/trace/jaeger/JaegerExporterHandlerIntegrationTest.java +++ b/exporters/trace/jaeger/src/test/java/io/opencensus/exporter/trace/jaeger/JaegerExporterHandlerIntegrationTest.java @@ -244,7 +244,7 @@ public class JaegerExporterHandlerIntegrationTest { logger.log(Level.INFO, "Jaeger is not yet ready, waiting a bit..."); Thread.sleep(10L); } catch (SocketException e) { - if (e.getMessage().contains("Unexpected end of file from server")) { + if (isRetryableError(e)) { // Jaeger seems to accept connections even though it is not yet ready to handle HTTP // requests. logger.log(Level.INFO, "Jaeger is still not yet ready, waiting a bit more...", e); @@ -255,4 +255,10 @@ public class JaegerExporterHandlerIntegrationTest { } } } + + private static boolean isRetryableError(final SocketException e) { + final String message = e.getMessage(); + return message.contains("Unexpected end of file from server") + || message.contains("Connection reset"); + } } |