Example usage for com.google.common.util.concurrent ListenableFuture isDone

List of usage examples for com.google.common.util.concurrent ListenableFuture isDone

Introduction

In this page you can find the example usage for com.google.common.util.concurrent ListenableFuture isDone.

Prototype

boolean isDone();

Source Link

Document

Returns true if this task completed.

Usage

From source file:com.facebook.presto.server.remotetask.TaskInfoFetcher.java

private synchronized void sendNextRequest() {
    TaskStatus taskStatus = getTaskInfo().getTaskStatus();

    if (!running) {
        return;//from   w  ww  . j  a  va2  s. co  m
    }

    // we already have the final task info
    if (isDone(getTaskInfo())) {
        stop();
        return;
    }

    // if we have an outstanding request
    if (future != null && !future.isDone()) {
        return;
    }

    // if throttled due to error, asynchronously wait for timeout and try again
    ListenableFuture<?> errorRateLimit = errorTracker.acquireRequestPermit();
    if (!errorRateLimit.isDone()) {
        errorRateLimit.addListener(this::sendNextRequest, executor);
        return;
    }

    HttpUriBuilder httpUriBuilder = uriBuilderFrom(taskStatus.getSelf());
    URI uri = summarizeTaskInfo ? httpUriBuilder.addParameter("summarize").build() : httpUriBuilder.build();
    Request request = prepareGet().setUri(uri).setHeader(CONTENT_TYPE, JSON_UTF_8.toString()).build();

    errorTracker.startRequest();
    future = httpClient.executeAsync(request, createFullJsonResponseHandler(taskInfoCodec));
    currentRequestStartNanos.set(System.nanoTime());
    Futures.addCallback(future, new SimpleHttpResponseHandler<>(this, request.getUri(), stats), executor);
}

From source file:network.bitmesh.TransactionServer.Client.BitmeshClient.java

private void waitForSufficientBalance(Coin amount) {
    // TODO// w w w . j  a v  a2  s . c  o m
    // Not enough money in the wallet.
    Coin amountPlusFee = amount.add(Wallet.SendRequest.DEFAULT_FEE_PER_KB);

    // ESTIMATED because we don't really need to wait for confirmation.
    ListenableFuture<Coin> balanceFuture = wallet.getBalanceFuture(amountPlusFee, Wallet.BalanceType.ESTIMATED);

    if (!balanceFuture.isDone()) {
        // TODO: Andrew put UI message here
        System.out.println("Please send " + amountPlusFee.toFriendlyString() + " to "
                + channelKey.toAddress(BitmeshConfiguration.params));
        Futures.getUnchecked(balanceFuture);
    }
}

From source file:com.google.bitcoin.net.discovery.TorDiscovery.java

private List<Circuit> getCircuits(long timeoutValue, TimeUnit timeoutUnit, Set<Router> routers)
        throws InterruptedException {
    createThreadPool(routers.size());/*from  ww  w. j  av a 2  s . com*/

    try {
        List<ListenableFuture<Circuit>> circuitFutures = Lists.newArrayList();
        for (final Router router : routers) {
            circuitFutures.add(threadPool.submit(new Callable<Circuit>() {
                public Circuit call() throws Exception {
                    return torClient.getCircuitManager().openInternalCircuitTo(Lists.newArrayList(router));
                }
            }));
        }

        int timeouts = 0;
        threadPool.awaitTermination(timeoutValue, timeoutUnit);
        for (ListenableFuture<Circuit> future : circuitFutures) {
            if (!future.isDone()) {
                timeouts++;
                future.cancel(true);
            }
        }
        if (timeouts > 0)
            log.warn("{} DNS lookup circuits timed out", timeouts);

        try {
            List<Circuit> circuits = new ArrayList<Circuit>(Futures.successfulAsList(circuitFutures).get());
            // Any failures will result in null entries.  Remove them.
            circuits.removeAll(singleton(null));
            return circuits;
        } catch (ExecutionException e) {
            // Cannot happen, successfulAsList accepts failures
            throw new RuntimeException(e);
        }
    } finally {
        shutdownThreadPool();
    }
}

From source file:com.google.sha1coin.net.discovery.TorDiscovery.java

private List<Circuit> getCircuits(long timeoutValue, TimeUnit timeoutUnit, Set<Router> routers)
        throws InterruptedException {
    createThreadPool(routers.size());// w  w w. jav a2 s  .c  o  m

    try {
        List<ListenableFuture<Circuit>> circuitFutures = Lists.newArrayList();
        for (final Router router : routers) {
            circuitFutures.add(threadPool.submit(new Callable<Circuit>() {
                @Override
                public Circuit call() throws Exception {
                    return torClient.getCircuitManager().openInternalCircuitTo(Lists.newArrayList(router));
                }
            }));
        }

        int timeouts = 0;
        threadPool.awaitTermination(timeoutValue, timeoutUnit);
        for (ListenableFuture<Circuit> future : circuitFutures) {
            if (!future.isDone()) {
                timeouts++;
                future.cancel(true);
            }
        }
        if (timeouts > 0)
            log.warn("{} DNS lookup circuits timed out", timeouts);

        try {
            List<Circuit> circuits = new ArrayList<Circuit>(Futures.successfulAsList(circuitFutures).get());
            // Any failures will result in null entries.  Remove them.
            circuits.removeAll(singleton(null));
            return circuits;
        } catch (ExecutionException e) {
            // Cannot happen, successfulAsList accepts failures
            throw new RuntimeException(e);
        }
    } finally {
        shutdownThreadPool();
    }
}

From source file:org.apache.brooklyn.util.net.ReachableSocketFinder.java

/**
 * Checks if any any of the given HostAndPorts are reachable. It checks them all concurrently, and
 * returns the first that is reachable (or Optional.absent).
 *//*from   ww  w  .  j a v a  2 s . c om*/
private Optional<HostAndPort> tryReachable(Collection<? extends HostAndPort> sockets, Duration timeout) {
    final AtomicReference<HostAndPort> reachableSocket = new AtomicReference<HostAndPort>();
    final CountDownLatch latch = new CountDownLatch(1);
    List<ListenableFuture<?>> futures = Lists.newArrayList();
    for (final HostAndPort socket : sockets) {
        futures.add(userExecutor.submit(new Runnable() {
            @Override
            public void run() {
                try {
                    if (socketTester.apply(socket)) {
                        reachableSocket.compareAndSet(null, socket);
                        latch.countDown();
                    }
                } catch (RuntimeInterruptedException e) {
                    throw e;
                } catch (RuntimeException e) {
                    LOG.warn("Error checking reachability of ip:port " + socket, e);
                }
            }
        }));
    }

    ListenableFuture<List<Object>> compoundFuture = Futures.successfulAsList(futures);
    Stopwatch stopwatch = Stopwatch.createStarted();
    try {
        while (reachableSocket.get() == null && !compoundFuture.isDone() && timeout.isLongerThan(stopwatch)) {
            latch.await(50, TimeUnit.MILLISECONDS);
        }
        return Optional.fromNullable(reachableSocket.get());

    } catch (InterruptedException e) {
        throw Exceptions.propagate(e);
    } finally {
        for (Future<?> future : futures) {
            future.cancel(true);
        }
    }
}

From source file:flipkart.lego.engine.Lego.java

private void cancelFutures(Collection<ListenableFuture> futures) {
    for (ListenableFuture future : futures) {
        try {/*from w w  w. ja  v  a  2  s.c om*/
            if (!future.isCancelled() && !future.isDone()) {
                future.cancel(true);
            }
        } catch (Exception ignored) {
        }
    }
}

From source file:com.google.bitcoin.net.discovery.TorDiscovery.java

private Collection<InetSocketAddress> lookupAddresses(long timeoutValue, TimeUnit timeoutUnit,
        List<Circuit> circuits) throws InterruptedException {
    createThreadPool(circuits.size() * hostNames.length);

    try {/*w  w w.  j av a  2  s . c  om*/
        List<ListenableFuture<Lookup>> lookupFutures = Lists.newArrayList();
        for (final Circuit circuit : circuits) {
            for (final String seed : hostNames) {
                lookupFutures.add(threadPool.submit(new Callable<Lookup>() {
                    public Lookup call() throws Exception {
                        return new Lookup(circuit.getFinalCircuitNode().getRouter(), lookup(circuit, seed));
                    }
                }));
            }
        }

        threadPool.awaitTermination(timeoutValue, timeoutUnit);
        int timeouts = 0;
        for (ListenableFuture<Lookup> future : lookupFutures) {
            if (!future.isDone()) {
                timeouts++;
                future.cancel(true);
            }
        }
        if (timeouts > 0)
            log.warn("{} DNS lookup circuits timed out", timeouts);

        try {
            List<Lookup> lookups = new ArrayList<Lookup>(Futures.successfulAsList(lookupFutures).get());
            // Any failures will result in null entries.  Remove them.
            lookups.removeAll(singleton(null));

            // Use a map to enforce one result per exit node
            // TODO: randomize result selection better
            Map<HexDigest, InetSocketAddress> lookupMap = Maps.newHashMap();

            for (Lookup lookup : lookups) {
                InetSocketAddress address = new InetSocketAddress(lookup.address, netParams.getPort());
                lookupMap.put(lookup.router.getIdentityHash(), address);
            }

            return lookupMap.values();
        } catch (ExecutionException e) {
            // Cannot happen, successfulAsList accepts failures
            throw new RuntimeException(e);
        }
    } finally {
        shutdownThreadPool();
    }
}

From source file:com.google.sha1coin.net.discovery.TorDiscovery.java

private Collection<InetSocketAddress> lookupAddresses(long timeoutValue, TimeUnit timeoutUnit,
        List<Circuit> circuits) throws InterruptedException {
    createThreadPool(circuits.size() * hostNames.length);

    try {//from   www  .  j a  v a2  s.c o m
        List<ListenableFuture<Lookup>> lookupFutures = Lists.newArrayList();
        for (final Circuit circuit : circuits) {
            for (final String seed : hostNames) {
                lookupFutures.add(threadPool.submit(new Callable<Lookup>() {
                    @Override
                    public Lookup call() throws Exception {
                        return new Lookup(circuit.getFinalCircuitNode().getRouter(), lookup(circuit, seed));
                    }
                }));
            }
        }

        threadPool.awaitTermination(timeoutValue, timeoutUnit);
        int timeouts = 0;
        for (ListenableFuture<Lookup> future : lookupFutures) {
            if (!future.isDone()) {
                timeouts++;
                future.cancel(true);
            }
        }
        if (timeouts > 0)
            log.warn("{} DNS lookup circuits timed out", timeouts);

        try {
            List<Lookup> lookups = new ArrayList<Lookup>(Futures.successfulAsList(lookupFutures).get());
            // Any failures will result in null entries.  Remove them.
            lookups.removeAll(singleton(null));

            // Use a map to enforce one result per exit node
            // TODO: randomize result selection better
            Map<HexDigest, InetSocketAddress> lookupMap = Maps.newHashMap();

            for (Lookup lookup : lookups) {
                InetSocketAddress address = new InetSocketAddress(lookup.address, netParams.getPort());
                lookupMap.put(lookup.router.getIdentityHash(), address);
            }

            return lookupMap.values();
        } catch (ExecutionException e) {
            // Cannot happen, successfulAsList accepts failures
            throw new RuntimeException(e);
        }
    } finally {
        shutdownThreadPool();
    }
}

From source file:c5db.log.QuorumDelegatingLogPerformanceMeasurement.java

private void sleepForDynamicDuration(ListenableFuture<Boolean> lastFuture) throws InterruptedException {
    Thread.sleep(dynamicSleepIntervalMillis);
    if (lastFuture.isDone() && dynamicSleepIntervalMillis > 0) {
        dynamicSleepIntervalMillis--;//  w w  w  . j av  a2s  .  c o  m
    } else {
        dynamicSleepIntervalMillis++;
    }
}

From source file:com.dogecoin.dogecoinj.net.discovery.TorDiscovery.java

private Collection<InetSocketAddress> lookupAddresses(long timeoutValue, TimeUnit timeoutUnit,
        List<Circuit> circuits) throws InterruptedException {
    createThreadPool(circuits.size() * hostNames.length);

    try {/*w w  w .ja  v  a2 s  . c o  m*/
        List<ListenableFuture<Lookup>> lookupFutures = Lists.newArrayList();
        for (final Circuit circuit : circuits) {
            for (final String seed : hostNames) {
                lookupFutures.add(threadPool.submit(new Callable<Lookup>() {
                    @Override
                    public Lookup call() throws Exception {
                        return new Lookup(circuit.getFinalCircuitNode().getRouter(), lookup(circuit, seed));
                    }
                }));
            }
        }

        threadPool.awaitTermination(timeoutValue, timeoutUnit);
        int timeouts = 0;
        for (ListenableFuture<Lookup> future : lookupFutures) {
            if (!future.isDone()) {
                timeouts++;
                future.cancel(true);
            }
        }
        if (timeouts > 0)
            log.warn("{} DNS lookups timed out", timeouts);

        try {
            List<Lookup> lookups = new ArrayList<Lookup>(Futures.successfulAsList(lookupFutures).get());
            // Any failures will result in null entries.  Remove them.
            lookups.removeAll(singleton(null));

            // Use a map to enforce one result per exit node
            // TODO: randomize result selection better
            Map<HexDigest, InetSocketAddress> lookupMap = Maps.newHashMap();

            for (Lookup lookup : lookups) {
                InetSocketAddress address = new InetSocketAddress(lookup.address, netParams.getPort());
                lookupMap.put(lookup.router.getIdentityHash(), address);
            }

            return lookupMap.values();
        } catch (ExecutionException e) {
            // Cannot happen, successfulAsList accepts failures
            throw new RuntimeException(e);
        }
    } finally {
        shutdownThreadPool();
    }
}