List of usage examples for com.google.common.util.concurrent Futures immediateFailedCheckedFuture
@GwtIncompatible("TODO") @CheckReturnValue public static <V, X extends Exception> CheckedFuture<V, X> immediateFailedCheckedFuture(X exception)
From source file:org.apache.s4.comm.staging.BlockingThreadPoolExecutorService.java
@Override public ListenableFuture<?> submit(Runnable task) { try {/*from w w w . ja va2 s . c om*/ queueingPermits.acquire(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); return Futures.immediateFailedCheckedFuture(e); } ListenableFuture<?> future = super.submit(new RunnableWithPermitRelease(task)); return future; }
From source file:org.opendaylight.streamhandler.impl.StreamhandlerImpl.java
@Override public Future<RpcResult<QuerySqlRelativeApiOutput>> querySqlRelativeApi(QuerySqlRelativeApiInput input) { final SettableFuture<RpcResult<QuerySqlRelativeApiOutput>> futureResult = SettableFuture.create(); String query = input.getQueryString(); Short timeRange = input.getTimeRange(); Short limit = input.getLimit(); List<String> eventFields = input.getEventFields(); List<Map<String, Object>> output = null; if (query == null) { return Futures.immediateFailedCheckedFuture( new TransactionCommitFailedException("invalid-input", RpcResultBuilder .newError(ErrorType.APPLICATION, "Field missing", "Mandatory field Query missing"))); }/* w w w . j a v a 2s.c om*/ if (limit == null) { limit = Short.parseShort(commonServices.defaultLimit); } if (timeRange == null && limit != null) { if (commonServices.dbType.equalsIgnoreCase(StreamConstants.HBASE)) { if (checkIfQueryContainsStreamWithSpaces(query)) { query = updateWhenQueryContainsStream(query); query = amendLimitToQuery(query, limit); } else if (checkIfQueryContainsAlertWithSpaces(query)) { query = updateWhenQueryContainsAlert(query); query = amendLimitToQuery(query, limit); } else if (checkIfQueryContainsDashboardWithSpaces(query)) { query = updateWhenQueryContainsDashboard(query); query = amendLimitToQuery(query, limit); } else if (checkIfQueryContainsData(query)) { query = updateWhenQueryContainsData(query); query = amendLimitToQuery(query, limit); } else { return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException( "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid query", "supported columns are stream, alert, dashboard and data "))); } } else { return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "DB type not supported", "DB type " + commonServices.dbType + "not supported"))); } } else if (timeRange != null && limit != null) { now.add(Calendar.MINUTE, -timeRange); String formattedTimestamp = sdf.format(now.getTime()); if (commonServices.dbType.equalsIgnoreCase(StreamConstants.HBASE)) { if (checkIfQueryContainsStreamWithSpaces(query)) { query = replaceFirstCentinelForDBType(query); if (checkIfQueryContainsStreamDot(query)) { query = query.replace(StreamConstants.STREAM_DOT, StreamConstants.CENTINEL_DOT + StreamConstants.STREAM_DOT); query = query + " AND centinel.stream.event_timestamp>=" + getSingleQuotedValue(formattedTimestamp); } else if (!checkIfQueryContainsStreamDot(query)) { query = query + " where centinel.stream.event_timestamp>=" + getSingleQuotedValue(formattedTimestamp); } query = replaceFirstStream(query); query = amendLimitToQuery(query, limit); } else if (checkIfQueryContainsAlertWithSpaces(query)) { query = replaceFirstCentinelForDBType(query); if (checkIfQueryContainsAlertDot(query)) { query = query.replace(StreamConstants.ALERT_DOT, StreamConstants.CENTINEL_DOT + StreamConstants.ALERT_DOT); query = query + " AND centinel.alert.check_result:triggeredAt>=" + getSingleQuotedValue(formattedTimestamp); } else if (!checkIfQueryContainsAlertDot(query)) { query = query + " where centinel.alert.check_result:triggeredAt>=" + getSingleQuotedValue(formattedTimestamp); } query = replaceFirstAlert(query); query = amendLimitToQuery(query, limit); } else if (checkIfQueryContainsDashboardWithSpaces(query)) { query = replaceFirstCentinelForDBType(query); if (checkIfQueryContainsDashboardDot(query)) { query = query.replace(StreamConstants.DASHBOARD_DOT, StreamConstants.CENTINEL_DOT + StreamConstants.DASHBOARD_DOT); query = query + AND + "centinel.dashboard.resetTime>=" + getSingleQuotedValue(formattedTimestamp); } else if (!checkIfQueryContainsDashboardDot(query)) { query = query + WHERE + "centinel.dashboard.resetTime>=" + getSingleQuotedValue(formattedTimestamp); } query = replaceFirstDashboard(query); query = amendLimitToQuery(query, limit); } else if (checkIfQueryContainsData(query)) { query = updateWhenQueryContainsData(query); query = amendLimitToQuery(query, limit); } else { return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException( "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid query", "supported columns are stream, alert, dashboard and data "))); } } else { return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "DB type not supported", "DB type " + commonServices.dbType + "not supported"))); } } query = query.replace(StreamConstants.COLON, StreamConstants.UNDERSCORE); query = commonServices.matchRegEx(query); Map<String, String> drillQuery = new HashMap<String, String>(); drillQuery.put(StreamConstants.QUERY_TYPE, StreamConstants.SQL); drillQuery.put(StreamConstants.QUERY, query); LOG.info("Drill Query: " + query); ClientResponse response = commonServices.drillRESTPost(drillQuery, commonServices.drillHostname, commonServices.drillPort); if (response != null && response.getStatus() != 200) { LOG.info("Error in Drill: " + response.getStatus()); return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "Error connecting drill", response.getClientResponseStatus().toString()))); } else { output = commonServices.parseResponse(response.getEntity(String.class), eventFields); } List<Records> recordList = new ArrayList<Records>(); for (Map<String, Object> out : output) { Iterator<Entry<String, Object>> itr = out.entrySet().iterator(); List<Fields> fieldsList = new ArrayList<Fields>(); while (itr.hasNext()) { Entry<String, Object> obj = itr.next(); fieldsList.add(new FieldsBuilder().setFieldValue(obj.getValue().toString()) .setFieldName(obj.getKey()).build()); } Records recordObj = new RecordsBuilder().setFields(fieldsList).build(); recordList.add(recordObj); } QuerySqlRelativeApiOutput queryOutput = new QuerySqlRelativeApiOutputBuilder().setRecords(recordList) .build(); futureResult.set(RpcResultBuilder.<QuerySqlRelativeApiOutput>success(queryOutput).build()); return futureResult; }
From source file:org.apache.hadoop.fs.s3a.BlockingThreadPoolExecutorService.java
@Override public <T> ListenableFuture<T> submit(Callable<T> task) { try {/*from www . j a v a 2 s . c om*/ queueingPermits.acquire(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); return Futures.immediateFailedCheckedFuture(e); } return super.submit(new CallableWithPermitRelease<T>(task)); }
From source file:org.opendaylight.netvirt.elan.l2gw.utils.ElanL2GatewayMulticastUtils.java
/** * Updates the remote mcast mac table for all the devices in this elan * includes all the dpn tep ips and other devices tep ips in broadcast * locator set.// w ww. ja va2 s . com * * @param elanName * the elan to be updated * @return the listenable future */ @SuppressWarnings("checkstyle:IllegalCatch") public ListenableFuture<Void> updateRemoteMcastMacOnElanL2GwDevices(String elanName) { try { WriteTransaction transaction = broker.newWriteOnlyTransaction(); for (L2GatewayDevice device : ElanL2GwCacheUtils.getInvolvedL2GwDevices(elanName).values()) { prepareRemoteMcastMacUpdateOnDevice(transaction, elanName, device); } return transaction.submit(); } catch (RuntimeException e) { LOG.error("Failed to configure mcast mac on elan " + elanName, e); return Futures.immediateFailedCheckedFuture(e); } }
From source file:org.opendaylight.faas.fabric.general.EndPointRegister.java
@Override public Future<RpcResult<Void>> locateEndpoint(LocateEndpointInput input) { final RpcResult<Void> result = RpcResultBuilder.<Void>success().build(); if (input == null) { return Futures.immediateFailedCheckedFuture(new IllegalArgumentException("endpoint can not be empty!")); }//from ww w . j ava2 s . c om final Uuid epId = input.getEndpointId(); if (epId == null) { return Futures.immediateFailedCheckedFuture(new IllegalArgumentException("endpoint can not be empty!")); } final FabricId fabricid = input.getFabricId(); final FabricInstance fabricObj = FabricInstanceCache.INSTANCE.retrieveFabric(fabricid); if (fabricObj == null) { return Futures.immediateFailedFuture(new IllegalArgumentException("fabric is not exist!")); } ReadWriteTransaction trans = dataBroker.newReadWriteTransaction(); EndpointBuilder epBuilder = new EndpointBuilder(); LocationBuilder locBuilder = new LocationBuilder(input.getLocation()); epBuilder.setEndpointUuid(epId); epBuilder.setLocation(locBuilder.build()); final InstanceIdentifier<Endpoint> eppath = Constants.DOM_ENDPOINTS_PATH.child(Endpoint.class, new EndpointKey(epId)); trans.merge(LogicalDatastoreType.OPERATIONAL, eppath, epBuilder.build()); CheckedFuture<Void, TransactionCommitFailedException> future = trans.submit(); return Futures.transform(future, new AsyncFunction<Void, RpcResult<Void>>() { @Override public ListenableFuture<RpcResult<Void>> apply(Void input) throws Exception { return Futures.immediateFuture(result); } }, executor); }
From source file:org.opendaylight.distributed.tx.impl.CachingReadWriteTx.java
public <T extends DataObject> CheckedFuture<Void, DTxException> asyncMerge( final LogicalDatastoreType logicalDatastoreType, final InstanceIdentifier<T> instanceIdentifier, final T t) { increaseOperation();/*from w w w . ja va 2 s . c o m*/ CheckedFuture<Optional<T>, ReadFailedException> readFuture = null; try { readFuture = delegate.read(logicalDatastoreType, instanceIdentifier); } catch (Exception e) { readFuture = Futures .immediateFailedCheckedFuture(new ReadFailedException("Read exception in merge action")); } final SettableFuture<Void> retFuture = SettableFuture.create(); Futures.addCallback(readFuture, new FutureCallback<Optional<T>>() { @Override public void onSuccess(final Optional<T> result) { synchronized (this) { cache.add(new CachedData(logicalDatastoreType, instanceIdentifier, result.orNull(), ModifyAction.MERGE)); } final ListeningExecutorService executorService = MoreExecutors .listeningDecorator(executorPoolPerCache); final ListenableFuture asyncMergeFuture = executorService.submit(new Callable() { @Override public Object call() throws Exception { delegate.merge(logicalDatastoreType, instanceIdentifier, t); return null; } }); Futures.addCallback(asyncMergeFuture, new FutureCallback() { @Override public void onSuccess(@Nullable Object result) { decreaseOperation(); retFuture.set(null); } @Override public void onFailure(Throwable t) { decreaseOperation(); LOG.trace("async merge failure"); retFuture.setException(new DTxException.EditFailedException("async merge failure", t)); } }); } @Override public void onFailure(final Throwable t) { decreaseOperation(); retFuture.setException( new DTxException.ReadFailedException("failed to read from node in merge action", t)); } }); return Futures.makeChecked(retFuture, new Function<Exception, DTxException>() { @Nullable @Override public DTxException apply(@Nullable Exception e) { e = (Exception) e.getCause(); return e instanceof DTxException ? (DTxException) e : new DTxException("merge operation failed", e); } }); }
From source file:org.opendaylight.toaster.impl.ToasterServiceImpl.java
@Override public Future<RpcResult<java.lang.Void>> makeToast(final MakeToastInput input) { LOG.info("makeToast: {}", input); String name = ManagementFactory.getRuntimeMXBean().getName(); LOG.info(name);/*from ww w . j a v a 2 s .co m*/ // get pid String pid = name.split("@")[0]; LOG.info("#########pid is:" + pid); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//? String time = df.format(new Date()); LOG.info("#########time is " + time);// new Date()?? String tid = Long.toString(Thread.currentThread().getId()); LOG.info("#########tid is:" + tid); record("makeToast", time, pid, tid); final InstanceIdentifier<Toaster> TOASTER_IID = InstanceIdentifier.builder(Toaster.class).build(); final ReadWriteTransaction tx = broker.newReadWriteTransaction(); ListenableFuture<Optional<Toaster>> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, TOASTER_IID); //Optional<Toaster>ListenableFuture??VoidListenableFuture final ListenableFuture<Void> commitFuture = Futures.transform(readFuture, new AsyncFunction<Optional<Toaster>, Void>() { @Override public ListenableFuture<Void> apply(final Optional<Toaster> toasterData) throws Exception { //?toastertasterStatus ToasterStatus toasterStatus = ToasterStatus.Down; if (toasterData.isPresent()) { toasterStatus = toasterData.get().getToasterStatus(); } //???Up if (toasterStatus == ToasterStatus.Up) { //Up? LOG.info("the toaster is already using,please wait a moment!"); return Futures.immediateFailedCheckedFuture( new TransactionCommitFailedException("", RpcResultBuilder.newWarning( ErrorType.APPLICATION, "in-use", "Toaster is busy", null, null, null))); } else { //down??Up? tx.put(LogicalDatastoreType.OPERATIONAL, TOASTER_IID, new ToasterBuilder().setToasterStatus(ToasterStatus.Up).build()); return tx.submit(); } } }); //callback Futures.addCallback(commitFuture, new FutureCallback<Void>() { @Override public void onSuccess(final Void result) { // data store?makeToast LOG.info("******Task Starts******"); currentMakeToastTask.set(executor.submit(new MakeToastTask(input))); } @Override public void onFailure(final Throwable ex) { LOG.debug("Failed to commit Toaster status", ex); } }); return Futures.immediateFuture(RpcResultBuilder.<Void>success().build()); }
From source file:org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext.java
@Override public CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> getSource( final SourceIdentifier sourceIdentifier) { final YangModuleInfo yangModuleInfo = sourceIdentifierToModuleInfo.get(sourceIdentifier); if (yangModuleInfo == null) { LOG.debug("Unknown schema source requested: {}, available sources: {}", sourceIdentifier, sourceIdentifierToModuleInfo.keySet()); return Futures.immediateFailedCheckedFuture( new SchemaSourceException("Unknown schema source: " + sourceIdentifier)); }//from www .j av a 2 s .co m return Futures.immediateCheckedFuture( YangTextSchemaSource.delegateForByteSource(sourceIdentifier, new ByteSource() { @Override public InputStream openStream() throws IOException { return yangModuleInfo.getModuleSourceStream(); } })); }
From source file:org.opendaylight.controller.sal.connect.netconf.sal.tx.NetconfDeviceReadOnlyTx.java
@Override public CheckedFuture<Boolean, ReadFailedException> exists(LogicalDatastoreType store, YangInstanceIdentifier path) {/* w ww.j a va 2 s. co m*/ CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> data = read(store, path); try { return Futures.immediateCheckedFuture(data.get().isPresent()); } catch (InterruptedException | ExecutionException e) { return Futures.immediateFailedCheckedFuture(new ReadFailedException("Exists failed", e)); } }
From source file:org.opendaylight.controller.sal.connect.netconf.schema.NetconfRemoteSchemaYangSourceProvider.java
@Override public CheckedFuture<YangTextSchemaSource, SchemaSourceException> getSource( final SourceIdentifier sourceIdentifier) { final String moduleName = sourceIdentifier.getName(); // If formatted revision is SourceIdentifier.NOT_PRESENT_FORMATTED_REVISION, we have to omit it from request final String formattedRevision = sourceIdentifier.getRevision() .equals(SourceIdentifier.NOT_PRESENT_FORMATTED_REVISION) ? null : sourceIdentifier.getRevision(); final Optional<String> revision = Optional.fromNullable(formattedRevision); final NormalizedNode<?, ?> getSchemaRequest = createGetSchemaRequest(moduleName, revision); logger.trace("{}: Loading YANG schema source for {}:{}", id, moduleName, revision); final ListenableFuture<YangTextSchemaSource> transformed = Futures.transform( rpc.invokeRpc(SchemaPath.create(true, NetconfMessageTransformUtil.GET_SCHEMA_QNAME), getSchemaRequest),/*from ww w .j a va 2 s . com*/ new ResultToYangSourceTransformer(id, sourceIdentifier, moduleName, revision)); final CheckedFuture<YangTextSchemaSource, SchemaSourceException> checked = Futures.makeChecked(transformed, MAPPER); // / FIXME remove this get, it is only present to wait until source is retrieved // (goal is to limit concurrent schema download, since NetconfDevice listener does not handle concurrent messages properly) // TODO retest this try { logger.trace("{}: Blocking for {}", id, sourceIdentifier); checked.checkedGet(); } catch (final SchemaSourceException e) { return Futures.immediateFailedCheckedFuture(e); } return checked; }