package org.infinispan.server.infinispan.task; import java.util.List; import java.util.concurrent.CompletableFuture; import org.infinispan.Cache; import org.infinispan.distexec.DefaultExecutorService; import org.infinispan.tasks.TaskContext; import org.infinispan.util.concurrent.CompletableFutures; /** * Author: Michal Szynkiewicz, michal.l.szynkiewicz@gmail.com * Date: 1/28/16 * Time: 9:36 AM */ public class DistributedServerTaskRunner implements ServerTaskRunner { @Override public <T> CompletableFuture<T> execute(String taskName, TaskContext context) { Cache<?, ?> masterCacheNode = context.getCache().get(); DefaultExecutorService des = new DefaultExecutorService(masterCacheNode); try { List<CompletableFuture<T>> tasks = des.submitEverywhere(new DistributedServerTask<>(taskName, context.getParameters())); // noinspection unchecked return (CompletableFuture<T>) CompletableFutures.sequence(tasks); } finally { des.shutdown(); } } }