import com.google.common.util.concurrent.SettableFuture;
import java.util.concurrent.CancellationException;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import java.util.function.Supplier;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.openflowplugin.api.ConnectionException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class StatisticsPollingService extends AbstractScheduledService {
+ private static final Logger LOG = LoggerFactory.getLogger(StatisticsPollingService.class);
private static final long DEFAULT_STATS_TIMEOUT = 50000;
private final TimeCounter counter;
private final Supplier<ListenableFuture<Boolean>> gatheringSupplier;
private final SettableFuture<Void> future = SettableFuture.create();
- StatisticsPollingService(@Nonnull final TimeCounter counter,
+ StatisticsPollingService(@NonNull final TimeCounter counter,
final long pollingInterval,
final long maximumTimerDelay,
- @Nonnull final Supplier<ListenableFuture<Boolean>> gatheringSupplier) {
+ @NonNull final Supplier<ListenableFuture<Boolean>> gatheringSupplier) {
this.counter = counter;
this.pollingInterval = pollingInterval;
this.maximumTimerDelay = maximumTimerDelay;
}
@Override
- protected void startUp() throws Exception {
+ protected void startUp() {
counter.markStart();
}
Futures.addCallback(gatheringSupplier.get(), new FutureCallback<Boolean>() {
@Override
- public void onSuccess(@Nonnull final Boolean result) {
+ public void onSuccess(final Boolean result) {
waitFuture.complete(result);
}
@Override
- public void onFailure(@Nonnull final Throwable throwable) {
+ public void onFailure(final Throwable throwable) {
waitFuture.completeExceptionally(throwable);
}
}, MoreExecutors.directExecutor());
try {
waitFuture.get(statsTimeout, TimeUnit.MILLISECONDS);
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.warn("Exception occured while waiting for the stats collection.", e);
} finally {
counter.addTimeMark();
}