List of usage examples for com.google.common.util.concurrent Futures get
@Deprecated @GwtIncompatible("reflection") public static <V, X extends Exception> V get(Future<V> future, Class<X> exceptionClass) throws X
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; }