Skip to content

Commit e765121

Browse files
committed
Return a CompletableFuture from BulkIngester.flush method
1 parent 64ec619 commit e765121

File tree

1 file changed

+17
-5
lines changed
  • java-client/src/main/java/co/elastic/clients/elasticsearch/_helpers/bulk

1 file changed

+17
-5
lines changed

java-client/src/main/java/co/elastic/clients/elasticsearch/_helpers/bulk/BulkIngester.java

+17-5
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
import java.util.ArrayList;
3636
import java.util.Collections;
3737
import java.util.List;
38-
import java.util.concurrent.CompletionStage;
38+
import java.util.concurrent.CompletableFuture;
3939
import java.util.concurrent.Executors;
4040
import java.util.concurrent.ScheduledExecutorService;
4141
import java.util.concurrent.ScheduledFuture;
@@ -80,9 +80,9 @@ private static class RequestExecution<Context> {
8080
public final long id;
8181
public final BulkRequest request;
8282
public final List<Context> contexts;
83-
public final CompletionStage<BulkResponse> futureResponse;
83+
public final CompletableFuture<BulkResponse> futureResponse;
8484

85-
RequestExecution(long id, BulkRequest request, List<Context> contexts, CompletionStage<BulkResponse> futureResponse) {
85+
RequestExecution(long id, BulkRequest request, List<Context> contexts, CompletableFuture<BulkResponse> futureResponse) {
8686
this.id = id;
8787
this.request = request;
8888
this.contexts = contexts;
@@ -271,7 +271,11 @@ private void failsafeFlush() {
271271
}
272272
}
273273

274-
public void flush() {
274+
/**
275+
* @return A future of the response. The BulkResponse is empty if there was nothing to execute.
276+
*/
277+
@Nullable
278+
public CompletableFuture<BulkResponse> flush() {
275279
RequestExecution<Context> exec = sendRequestCondition.whenReadyIf(
276280
() -> {
277281
// May happen on manual and periodic flushes
@@ -294,7 +298,7 @@ public void flush() {
294298
listener.beforeBulk(id, request, requestContexts);
295299
}
296300

297-
CompletionStage<BulkResponse> result = client.bulk(request);
301+
CompletableFuture<BulkResponse> result = client.bulk(request);
298302
requestsInFlightCount++;
299303

300304
if (listener == null) {
@@ -327,7 +331,15 @@ public void flush() {
327331
}
328332
return null;
329333
});
334+
335+
return exec.futureResponse;
330336
}
337+
338+
return CompletableFuture.completedFuture(BulkResponse.of(b -> b
339+
.errors(false)
340+
.items(Collections.emptyList())
341+
.took(1))
342+
);
331343
}
332344

333345
public void add(BulkOperation operation, Context context) {

0 commit comments

Comments
 (0)