Fix flaky google http client async test (#7805)

https://ge.opentelemetry.io/s/gnwekqhhf3ut6/tests/:instrumentation:google-http-client-1.19:javaagent:test/io.opentelemetry.javaagent.instrumentation.googlehttpclient.GoogleHttpClientAsyncTest/highConcurrency()?page=eyJvdXRwdXQiOnsiMCI6Mn19&top-execution=1
The problem is that the google http client method we use is implemented
like
```
  public Future<HttpResponse> executeAsync() {
    return executeAsync(Executors.newSingleThreadExecutor());
  }
```
as explained in https://bugs.openjdk.org/browse/JDK-8145304 when
`newSingleThreadExecutor` is used in such a way it is possible that this
executor is shut down before it actually manages to execute anything.
This commit is contained in:
Lauri Tulmin 2023-02-13 11:11:30 +02:00 committed by GitHub
parent bbb6482979
commit dde140c161
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 1 deletions

View File

@ -7,11 +7,21 @@ package io.opentelemetry.javaagent.instrumentation.googlehttpclient;
import com.google.api.client.http.HttpRequest; import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpResponse; import com.google.api.client.http.HttpResponse;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.junit.jupiter.api.AfterAll;
class GoogleHttpClientAsyncTest extends AbstractGoogleHttpClientTest { class GoogleHttpClientAsyncTest extends AbstractGoogleHttpClientTest {
private final ExecutorService executor = Executors.newFixedThreadPool(4);
@AfterAll
void tearDown() {
executor.shutdown();
}
@Override @Override
protected HttpResponse sendRequest(HttpRequest request) throws Exception { protected HttpResponse sendRequest(HttpRequest request) throws Exception {
return request.executeAsync().get(); return request.executeAsync(executor).get();
} }
} }