Add `socketTimeout` back to the new implementation (#7798)

This commit is contained in:
kezhenxu94 2021-09-24 22:35:56 +08:00 committed by GitHub
parent 24aa9b1ba9
commit ad9d616297
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 1 deletions

View File

@ -117,6 +117,7 @@ public class ElasticSearchClient implements Client, HealthCheckable {
.endpoints(clusterNodes.split(","))
.protocol(protocol)
.connectTimeout(connectTimeout)
.socketTimeout(socketTimeout)
.numHttpClientThread(numHttpClientThread)
.healthyListener(healthy -> {
if (healthy) {

View File

@ -63,6 +63,8 @@ public final class ElasticSearchBuilder {
private Duration connectTimeout = Duration.ofMillis(500);
private Duration socketTimeout = Duration.ofSeconds(30);
private Consumer<Boolean> healthyListener;
private int numHttpClientThread;
@ -117,6 +119,12 @@ public final class ElasticSearchBuilder {
return this;
}
public ElasticSearchBuilder socketTimeout(int socketTimeout) {
checkArgument(socketTimeout > 0, "socketTimeout must be positive");
this.socketTimeout = Duration.ofMillis(socketTimeout);
return this;
}
public ElasticSearchBuilder healthyListener(Consumer<Boolean> healthyListener) {
requireNonNull(healthyListener, "healthyListener");
this.healthyListener = healthyListener;
@ -138,6 +146,7 @@ public final class ElasticSearchBuilder {
final ClientFactoryBuilder factoryBuilder =
ClientFactory.builder()
.connectTimeout(connectTimeout)
.idleTimeout(socketTimeout)
.useHttp2Preface(false)
.workerGroup(numHttpClientThread > 0 ? numHttpClientThread : NUM_PROC);

View File

@ -84,9 +84,10 @@ public final class BulkProcessor {
return this;
}
@SneakyThrows
private void internalAdd(Object request) {
requireNonNull(request, "request");
requests.add(request);
requests.put(request);
flushIfNeeded();
}
@ -120,6 +121,10 @@ public final class BulkProcessor {
private CompletableFuture<Void> doFlush(final List<Object> batch) {
log.debug("Executing bulk with {} requests", batch.size());
if (batch.isEmpty()) {
return CompletableFuture.completedFuture(null);
}
final CompletableFuture<Void> future = es.get().version().thenCompose(v -> {
try {
final RequestFactory rf = v.requestFactory();