3535import java .util .ArrayList ;
3636import java .util .Collections ;
3737import java .util .List ;
38- import java .util .concurrent .CompletionStage ;
38+ import java .util .concurrent .CompletableFuture ;
3939import java .util .concurrent .Executors ;
4040import java .util .concurrent .ScheduledExecutorService ;
4141import 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