X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fjmx%2Fmbeans%2Fshard%2FShardDataTreeListenerInfoMXBeanImpl.java;h=6384735cf15554235e47c585e255cef7bb6d1df0;hp=6c6726ca08d5054d0715ac776fbc6c29152f6858;hb=4ad8e1880cfee424eac9e4f12e461d98445a6e44;hpb=e17e8a357ae1d9da2534ced9f54bffdb54c0f6a7 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardDataTreeListenerInfoMXBeanImpl.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardDataTreeListenerInfoMXBeanImpl.java index 6c6726ca08..6384735cf1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardDataTreeListenerInfoMXBeanImpl.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/jmx/mbeans/shard/ShardDataTreeListenerInfoMXBeanImpl.java @@ -15,11 +15,14 @@ import akka.dispatch.Futures; import akka.pattern.Patterns; import akka.util.Timeout; import com.google.common.base.Throwables; +import com.google.common.collect.Streams; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; import org.opendaylight.controller.cluster.datastore.messages.DataTreeListenerInfo; import org.opendaylight.controller.cluster.datastore.messages.GetInfo; import org.opendaylight.controller.cluster.datastore.messages.OnDemandShardState; @@ -68,13 +71,14 @@ public class ShardDataTreeListenerInfoMXBeanImpl extends AbstractMXBean implemen futureList.add(Patterns.ask(actor, GetInfo.INSTANCE, timeout)); } + final Iterable listenerInfos; try { - final List listenerInfoList = new ArrayList<>(); - Await.result(Futures.sequence(futureList, ExecutionContext.Implicits$.MODULE$.global()), - timeout.duration()).forEach(obj -> listenerInfoList.add((DataTreeListenerInfo) obj)); - return listenerInfoList; - } catch (Exception e) { - throw new RuntimeException(e); + listenerInfos = Await.result(Futures.sequence(futureList, ExecutionContext.Implicits$.MODULE$.global()), + timeout.duration()); + } catch (TimeoutException | InterruptedException e) { + throw new IllegalStateException("Failed to acquire listeners", e); } + + return Streams.stream(listenerInfos).map(DataTreeListenerInfo.class::cast).collect(Collectors.toList()); } }