Sho SHIMIZU
Committed by Gerrit Code Review

Refactor: Use Tools.allOf() to wait until all tasks become completed

Change-Id: I2f032e4d8dd525c4dd40d7ad954dca8c5d33b159
...@@ -21,6 +21,7 @@ import org.apache.felix.scr.annotations.Deactivate; ...@@ -21,6 +21,7 @@ import org.apache.felix.scr.annotations.Deactivate;
21 import org.apache.felix.scr.annotations.Reference; 21 import org.apache.felix.scr.annotations.Reference;
22 import org.apache.felix.scr.annotations.ReferenceCardinality; 22 import org.apache.felix.scr.annotations.ReferenceCardinality;
23 import org.apache.felix.scr.annotations.Service; 23 import org.apache.felix.scr.annotations.Service;
24 +import org.onlab.util.Tools;
24 import org.onosproject.core.CoreService; 25 import org.onosproject.core.CoreService;
25 import org.onosproject.core.IdGenerator; 26 import org.onosproject.core.IdGenerator;
26 import org.onosproject.event.AbstractListenerManager; 27 import org.onosproject.event.AbstractListenerManager;
...@@ -322,16 +323,17 @@ public class IntentManager ...@@ -322,16 +323,17 @@ public class IntentManager
322 3. accumulate results and submit batch write of IntentData to store 323 3. accumulate results and submit batch write of IntentData to store
323 (we can also try to update these individually) 324 (we can also try to update these individually)
324 */ 325 */
325 - store.batchWrite(operations.stream() 326 + List<CompletableFuture<IntentData>> futures = operations.stream()
326 .map(IntentManager.this::submitIntentData) 327 .map(IntentManager.this::submitIntentData)
328 + .map(x -> x.thenApply(FinalIntentProcessPhase::data))
327 .map(x -> x.exceptionally(e -> { 329 .map(x -> x.exceptionally(e -> {
328 //FIXME 330 //FIXME
329 log.warn("Future failed: {}", e); 331 log.warn("Future failed: {}", e);
330 return null; 332 return null;
331 })) 333 }))
332 - .map(CompletableFuture::join) 334 + .collect(Collectors.toList());
335 + store.batchWrite(Tools.allOf(futures).join().stream()
333 .filter(Objects::nonNull) 336 .filter(Objects::nonNull)
334 - .map(FinalIntentProcessPhase::data)
335 .collect(Collectors.toList())); 337 .collect(Collectors.toList()));
336 } catch (Exception e) { 338 } catch (Exception e) {
337 log.error("Error submitting batches:", e); 339 log.error("Error submitting batches:", e);
......