35
35
import java .util .ArrayList ;
36
36
import java .util .Collections ;
37
37
import java .util .List ;
38
- import java .util .concurrent .CompletionStage ;
38
+ import java .util .concurrent .CompletableFuture ;
39
39
import java .util .concurrent .Executors ;
40
40
import java .util .concurrent .ScheduledExecutorService ;
41
41
import java .util .concurrent .ScheduledFuture ;
@@ -80,9 +80,9 @@ private static class RequestExecution<Context> {
80
80
public final long id ;
81
81
public final BulkRequest request ;
82
82
public final List <Context > contexts ;
83
- public final CompletionStage <BulkResponse > futureResponse ;
83
+ public final CompletableFuture <BulkResponse > futureResponse ;
84
84
85
- RequestExecution (long id , BulkRequest request , List <Context > contexts , CompletionStage <BulkResponse > futureResponse ) {
85
+ RequestExecution (long id , BulkRequest request , List <Context > contexts , CompletableFuture <BulkResponse > futureResponse ) {
86
86
this .id = id ;
87
87
this .request = request ;
88
88
this .contexts = contexts ;
@@ -271,7 +271,11 @@ private void failsafeFlush() {
271
271
}
272
272
}
273
273
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 () {
275
279
RequestExecution <Context > exec = sendRequestCondition .whenReadyIf (
276
280
() -> {
277
281
// May happen on manual and periodic flushes
@@ -294,7 +298,7 @@ public void flush() {
294
298
listener .beforeBulk (id , request , requestContexts );
295
299
}
296
300
297
- CompletionStage <BulkResponse > result = client .bulk (request );
301
+ CompletableFuture <BulkResponse > result = client .bulk (request );
298
302
requestsInFlightCount ++;
299
303
300
304
if (listener == null ) {
@@ -327,7 +331,15 @@ public void flush() {
327
331
}
328
332
return null ;
329
333
});
334
+
335
+ return exec .futureResponse ;
330
336
}
337
+
338
+ return CompletableFuture .completedFuture (BulkResponse .of (b -> b
339
+ .errors (false )
340
+ .items (Collections .emptyList ())
341
+ .took (1 ))
342
+ );
331
343
}
332
344
333
345
public void add (BulkOperation operation , Context context ) {
0 commit comments