Example usage for com.google.common.util.concurrent Futures get

List of usage examples for com.google.common.util.concurrent Futures get

Introduction

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

Prototype

@Deprecated
@GwtIncompatible("reflection")
public static <V, X extends Exception> V get(Future<V> future, Class<X> exceptionClass) throws X 

Source Link

Document

Returns the result of Future#get() , converting most exceptions to a new instance of the given checked exception type.

Usage

From source file:com.spotify.asyncdatastoreclient.Datastore.java

/**
 * Execute a query statement in a given transaction.
 *
 * @param statement the statement to execute.
 * @param txn the transaction to execute the query.
 * @return the result of the query request.
 *//* w ww . j  a  v a 2  s  . c  om*/
public QueryResult execute(final Query statement, final TransactionResult txn) throws DatastoreException {
    return Futures.get(executeAsync(statement, Futures.immediateFuture(txn)), DatastoreException.class);
}

From source file:org.apache.hadoop.hdfs.server.datanode.DataStorage.java

static void linkBlocks(DataNode datanode, File from, File to, int oldLV, HardLink hl) throws IOException {
    boolean upgradeToIdBasedLayout = false;
    // If we are upgrading from a version older than the one where we introduced
    // block ID-based layout AND we're working with the finalized directory,
    // we'll need to upgrade from the old flat layout to the block ID-based one
    if (oldLV > DataNodeLayoutVersion.Feature.BLOCKID_BASED_LAYOUT.getInfo().getLayoutVersion()
            && to.getName().equals(STORAGE_DIR_FINALIZED)) {
        upgradeToIdBasedLayout = true;/*from   www.j  a v  a  2 s  .  c o m*/
    }

    final ArrayList<LinkArgs> idBasedLayoutSingleLinks = Lists.newArrayList();
    linkBlocksHelper(from, to, oldLV, hl, upgradeToIdBasedLayout, to, idBasedLayoutSingleLinks);

    // Detect and remove duplicate entries.
    final ArrayList<LinkArgs> duplicates = findDuplicateEntries(idBasedLayoutSingleLinks);
    if (!duplicates.isEmpty()) {
        LOG.error("There are " + duplicates.size() + " duplicate block " + "entries within the same volume.");
        removeDuplicateEntries(idBasedLayoutSingleLinks, duplicates);
    }

    int numLinkWorkers = datanode.getConf().getInt(
            DFSConfigKeys.DFS_DATANODE_BLOCK_ID_LAYOUT_UPGRADE_THREADS_KEY,
            DFSConfigKeys.DFS_DATANODE_BLOCK_ID_LAYOUT_UPGRADE_THREADS);
    ExecutorService linkWorkers = Executors.newFixedThreadPool(numLinkWorkers);
    final int step = idBasedLayoutSingleLinks.size() / numLinkWorkers + 1;
    List<Future<Void>> futures = Lists.newArrayList();
    for (int i = 0; i < idBasedLayoutSingleLinks.size(); i += step) {
        final int iCopy = i;
        futures.add(linkWorkers.submit(new Callable<Void>() {
            @Override
            public Void call() throws IOException {
                int upperBound = Math.min(iCopy + step, idBasedLayoutSingleLinks.size());
                for (int j = iCopy; j < upperBound; j++) {
                    LinkArgs cur = idBasedLayoutSingleLinks.get(j);
                    NativeIO.link(cur.src, cur.dst);
                }
                return null;
            }
        }));
    }
    linkWorkers.shutdown();
    for (Future<Void> f : futures) {
        Futures.get(f, IOException.class);
    }
}

From source file:org.apache.hadoop.yarn.server.resourcemanager.ClientRMService.java

@SuppressWarnings("unchecked")
@Override//www.j  av  a 2s  .c om
public MoveApplicationAcrossQueuesResponse moveApplicationAcrossQueues(
        MoveApplicationAcrossQueuesRequest request) throws YarnException {
    ApplicationId applicationId = request.getApplicationId();

    UserGroupInformation callerUGI;
    try {
        callerUGI = UserGroupInformation.getCurrentUser();
    } catch (IOException ie) {
        LOG.info("Error getting UGI ", ie);
        RMAuditLogger.logFailure("UNKNOWN", AuditConstants.MOVE_APP_REQUEST, "UNKNOWN", "ClientRMService",
                "Error getting UGI", applicationId);
        throw RPCUtil.getRemoteException(ie);
    }

    RMApp application = this.rmContext.getRMApps().get(applicationId);
    if (application == null) {
        RMAuditLogger.logFailure(callerUGI.getUserName(), AuditConstants.MOVE_APP_REQUEST, "UNKNOWN",
                "ClientRMService", "Trying to move an absent application", applicationId);
        throw new ApplicationNotFoundException("Trying to move an absent" + " application " + applicationId);
    }

    if (!checkAccess(callerUGI, application.getUser(), ApplicationAccessType.MODIFY_APP, application)) {
        RMAuditLogger.logFailure(callerUGI.getShortUserName(), AuditConstants.MOVE_APP_REQUEST,
                "User doesn't have permissions to " + ApplicationAccessType.MODIFY_APP.toString(),
                "ClientRMService", AuditConstants.UNAUTHORIZED_USER, applicationId);
        throw RPCUtil.getRemoteException(
                new AccessControlException("User " + callerUGI.getShortUserName() + " cannot perform operation "
                        + ApplicationAccessType.MODIFY_APP.name() + " on " + applicationId));
    }

    // Moves only allowed when app is in a state that means it is tracked by
    // the scheduler
    if (EnumSet.of(RMAppState.NEW, RMAppState.NEW_SAVING, RMAppState.FAILED, RMAppState.FINAL_SAVING,
            RMAppState.FINISHING, RMAppState.FINISHED, RMAppState.KILLED, RMAppState.KILLING, RMAppState.FAILED)
            .contains(application.getState())) {
        String msg = "App in " + application.getState() + " state cannot be moved.";
        RMAuditLogger.logFailure(callerUGI.getShortUserName(), AuditConstants.MOVE_APP_REQUEST, "UNKNOWN",
                "ClientRMService", msg);
        throw new YarnException(msg);
    }

    SettableFuture<Object> future = SettableFuture.create();
    this.rmContext.getDispatcher().getEventHandler()
            .handle(new RMAppMoveEvent(applicationId, request.getTargetQueue(), future));

    try {
        Futures.get(future, YarnException.class);
    } catch (YarnException ex) {
        RMAuditLogger.logFailure(callerUGI.getShortUserName(), AuditConstants.MOVE_APP_REQUEST, "UNKNOWN",
                "ClientRMService", ex.getMessage());
        throw ex;
    }

    RMAuditLogger.logSuccess(callerUGI.getShortUserName(), AuditConstants.MOVE_APP_REQUEST, "ClientRMService",
            applicationId);
    MoveApplicationAcrossQueuesResponse response = recordFactory
            .newRecordInstance(MoveApplicationAcrossQueuesResponse.class);
    return response;
}