List of usage examples for com.google.common.util.concurrent ListenableFuture isDone
boolean isDone();
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(); } }