List of usage examples for com.google.common.util.concurrent SettableFuture set
@Override public boolean set(@Nullable V value)
From source file:org.opendaylight.ofconfig.southbound.impl.api.ver12.helper.AbstractOfconfigVer12HandlerHelper.java
@Override public Future<RpcResult<Void>> doPut(T request) { SettableFuture<RpcResult<Void>> resultFuture = SettableFuture.create(); try {/*from w ww. j av a 2 s .c o m*/ String netconfigId = getNetconfigTopoNodeId(request); Optional<CapableSwitch> capableSwitchOptional = getDeviceCapableSwitch(netconfigId); if (!capableSwitchOptional.isPresent()) { return buildNotFoundResult(netconfigId); } CapableSwitch newCapableSwitch = putCapableSwitch(capableSwitchOptional.get(), request); updateDeviceCapableSwitch(newCapableSwitch, netconfigId); updateOfOfconfig(netconfigId); resultFuture.set(RpcResultBuilder.<Void>success().build()); } catch (Exception e) { String netconfigId = getNetconfigTopoNodeId(request); logger.error("put operation occurr error,netconf topo node id:{}", netconfigId, e); resultFuture.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, "put operation occurr error,netconf topo node id:{}", netconfigId).build()); } return resultFuture; }
From source file:org.apache.bookkeeper.stream.segment.BKSegmentWriter.java
/** * Flush current entry buffer as an entry to bookkeeper. *//*from w w w. j a v a2s.c o m*/ private void flush0(boolean isCommitEntry, SettableFuture<SSN> future) { if (null == curEntryBuilder || (!isCommitEntry && 0 == curEntryBuilder.getBufferSize())) { if (null != future) { future.set(lastFlushedSSN); } return; } // 1. build current entry EntryBuilder entryBuilder = curEntryBuilder; if (isCommitEntry) { entryBuilder.asCommitEntry(); } else { entryBuilder.asDataEntry(); } Entry entry = entryBuilder.build(); // 2. add current entry to pending queue pendingEntries.add(entry); // 3. flush current entry to bookkeeper AddEntryContext addCtx = new AddEntryContext(entry, future); EntryData entryData = entry.getEntryData(); if (logger.isTraceEnabled()) { logger.trace("Flushing entry {} : {} to segment {} @ {}", new Object[] { numEntries, entry, segmentName, streamName }); } lh.asyncAddEntry(entryData.data, entryData.offset, entryData.len, this, addCtx); // 4. flushing an entry will commit any uncommitted data. hasDataUncommitted = false; // 5. create next entry builder lastNumBytes = entry.getLastNumBytes() + entry.getNumBytes(); lastNumRecords = entry.getLastNumRecords() + entry.getNumRecords(); ++numEntries; try { curEntryBuilder = nextEntryBuilder(); } catch (IOException e) { logger.error("Error on creating next entry on segment {}@{} : ", new Object[] { segmentName, streamName, e }); inErrorState = true; curEntryBuilder = null; } }
From source file:org.opendaylight.ofconfig.southbound.impl.api.ver12.helper.AbstractOfconfigVer12HandlerHelper.java
@Override public Future<RpcResult<Void>> doMerge(T request) { SettableFuture<RpcResult<Void>> resultFuture = SettableFuture.create(); try {/*from ww w .j ava 2 s . c o m*/ String netconfigId = getNetconfigTopoNodeId(request); Optional<CapableSwitch> capableSwitchOptional = getDeviceCapableSwitch(netconfigId); if (!capableSwitchOptional.isPresent()) { return buildNotFoundResult(netconfigId); } CapableSwitch newCapableSwitch = mergeCapableSwitch(capableSwitchOptional.get(), request); updateDeviceCapableSwitch(newCapableSwitch, netconfigId); updateOfOfconfig(netconfigId); resultFuture.set(RpcResultBuilder.<Void>success().build()); } catch (Exception e) { String netconfigId = getNetconfigTopoNodeId(request); logger.error("merge operation occurr error,netconf topo node id:{}", netconfigId, e); resultFuture.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, "merge operation occurr error,netconf topo node id:{}", netconfigId).build()); } return resultFuture; }
From source file:org.opendaylight.ofconfig.southbound.impl.api.ver12.helper.AbstractOfconfigVer12HandlerHelper.java
@Override public Future<RpcResult<Void>> doDelete(T request) { SettableFuture<RpcResult<Void>> resultFuture = SettableFuture.create(); try {//from w ww. j av a2 s . c o m String netconfigId = getNetconfigTopoNodeId(request); Optional<CapableSwitch> capableSwitchOptional = getDeviceCapableSwitch(netconfigId); if (!capableSwitchOptional.isPresent()) { return buildNotFoundResult(netconfigId); } CapableSwitch newCapableSwitch = deleteCapableSwitch(capableSwitchOptional.get(), request); updateDeviceCapableSwitch(newCapableSwitch, netconfigId); updateOfOfconfig(netconfigId); resultFuture.set(RpcResultBuilder.<Void>success().build()); } catch (Exception e) { String netconfigId = getNetconfigTopoNodeId(request); logger.error("delete operation occurr error,netconf topo node id:{}", netconfigId, e); resultFuture.set(RpcResultBuilder.<Void>failed().withError(ErrorType.APPLICATION, "delete operation occurr error,netconf topo node id:{}", netconfigId).build()); } return resultFuture; }
From source file:io.crate.executor.transport.task.UpsertByIdTask.java
private List<SettableFuture<Long>> initializeBulkShardProcessor(Settings settings) { assert upsertById.updateColumns() != null || upsertById.insertColumns() != null; ShardUpsertRequest.Builder builder = new ShardUpsertRequest.Builder( CrateSettings.BULK_REQUEST_TIMEOUT.extractTimeValue(settings), false, // do not overwrite duplicates upsertById.numBulkResponses() > 0 || upsertById.items().size() > 1 || upsertById.updateColumns() != null, // continue on error on bulk, on multiple values and/or update upsertById.updateColumns(), upsertById.insertColumns(), jobId(), false); BulkShardProcessor<ShardUpsertRequest> bulkShardProcessor = new BulkShardProcessor<>(clusterService, transportBulkCreateIndicesAction, indexNameExpressionResolver, settings, bulkRetryCoordinatorPool, upsertById.isPartitionedTable(), upsertById.items().size(), builder, transportShardUpsertActionDelegate, jobId()); bulkShardProcessorContext = new BulkShardProcessorContext(upsertById.executionPhaseId(), bulkShardProcessor);/*w w w .j a va2s.c o m*/ if (upsertById.numBulkResponses() == 0) { final SettableFuture<Long> futureResult = SettableFuture.create(); List<SettableFuture<Long>> resultList = new ArrayList<>(1); resultList.add(futureResult); Futures.addCallback(bulkShardProcessor.result(), new FutureCallback<BitSet>() { @Override public void onSuccess(@Nullable BitSet result) { if (result == null) { // unknown rowcount futureResult.set(Executor.ROWCOUNT_UNKNOWN); } else { futureResult.set((long) result.cardinality()); } bulkShardProcessorContext.close(); } @Override public void onFailure(@Nonnull Throwable t) { futureResult.setException(t); bulkShardProcessorContext.close(); } }); return resultList; } else { final int numResults = upsertById.numBulkResponses(); final Integer[] resultsRowCount = new Integer[numResults]; final List<SettableFuture<Long>> resultList = new ArrayList<>(numResults); for (int i = 0; i < numResults; i++) { resultList.add(SettableFuture.<Long>create()); } Futures.addCallback(bulkShardProcessor.result(), new FutureCallback<BitSet>() { @Override public void onSuccess(@Nullable BitSet result) { if (result == null) { setAllToFailed(null); return; } for (int i = 0; i < result.length(); i++) { int resultIdx = upsertById.bulkIndices().get(i); if (resultsRowCount[resultIdx] == null) { resultsRowCount[resultIdx] = result.get(i) ? 1 : -2; } else if (resultsRowCount[resultIdx] >= 0 && result.get(i)) { resultsRowCount[resultIdx]++; } } for (int i = 0; i < numResults; i++) { SettableFuture<Long> future = resultList.get(i); Integer rowCount = resultsRowCount[i]; if (rowCount != null && rowCount >= 0) { future.set((long) rowCount); } else { // failure future.set(Executor.ROWCOUNT_ERROR); } } bulkShardProcessorContext.close(); } private void setAllToFailed(@Nullable Throwable throwable) { if (throwable == null) { for (SettableFuture<Long> future : resultList) { future.set(Executor.ROWCOUNT_ERROR); } } else { for (SettableFuture<Long> future : resultList) { future.setException(throwable); } } } @Override public void onFailure(@Nonnull Throwable t) { setAllToFailed(t); bulkShardProcessorContext.close(); } }); return resultList; } }
From source file:org.apache.beam.runners.dataflow.worker.WindmillStateReader.java
private <T> void consumeBag(TagBag bag, StateTag stateTag) { boolean shouldRemove; if (stateTag.requestPosition == null) { // This is the response for the first page. // Leave the future in the cache so subsequent requests for the first page // can return immediately. shouldRemove = false;/*ww w.j a va2 s.c o m*/ } else { // This is a response for a subsequent page. // Don't cache the future since we may need to make multiple requests with different // continuation positions. shouldRemove = true; } CoderAndFuture<T, ValuesAndContPosition<T>> coderAndFuture = getWaiting(stateTag, shouldRemove); SettableFuture<ValuesAndContPosition<T>> future = coderAndFuture.getNonDoneFuture(stateTag); Coder<T> coder = coderAndFuture.getAndClearCoder(); List<T> values = this.<T>bagPageValues(bag, coder); future.set(new ValuesAndContPosition<T>(values, bag.hasContinuationPosition() ? bag.getContinuationPosition() : null)); }
From source file:co.cask.cdap.internal.app.runtime.AbstractProgramController.java
@Override public final ListenableFuture<ProgramController> resume() { if (!state.compareAndSet(State.SUSPENDED, State.RESUMING)) { return Futures .immediateFailedFuture(new IllegalStateException("Resumption not allowed").fillInStackTrace()); }//w ww. j ava 2 s . com final SettableFuture<ProgramController> result = SettableFuture.create(); executor(State.RESUMING).execute(new Runnable() { @Override public void run() { try { caller.resuming(); doResume(); state.set(State.ALIVE); result.set(AbstractProgramController.this); caller.alive(); } catch (Throwable t) { error(t, result); } } }); return result; }
From source file:co.cask.cdap.internal.app.runtime.AbstractProgramController.java
@Override public final ListenableFuture<ProgramController> stop() { if (!state.compareAndSet(State.STARTING, State.STOPPING) && !state.compareAndSet(State.ALIVE, State.STOPPING) && !state.compareAndSet(State.SUSPENDED, State.STOPPING)) { return Futures .immediateFailedFuture(new IllegalStateException("Stopping not allowed").fillInStackTrace()); }/*from www.ja v a2 s. c o m*/ final SettableFuture<ProgramController> result = SettableFuture.create(); executor(State.STOPPING).execute(new Runnable() { @Override public void run() { try { caller.stopping(); doStop(); state.set(State.KILLED); result.set(AbstractProgramController.this); caller.killed(); } catch (Throwable t) { error(t, result); } } }); return result; }
From source file:org.opendaylight.netconf.topology.pipeline.tx.ProxyWriteOnlyTransaction.java
@Override public CheckedFuture<Void, TransactionCommitFailedException> submit() { final Future<Void> submit = delegate.submit(); final SettableFuture<Void> settableFuture = SettableFuture.create(); final CheckedFuture<Void, TransactionCommitFailedException> checkedFuture = Futures .makeChecked(settableFuture, new Function<Exception, TransactionCommitFailedException>() { @Nullable//from w w w. ja v a 2 s . c om @Override public TransactionCommitFailedException apply(Exception input) { return new TransactionCommitFailedException("Transaction commit failed", input); } }); submit.onComplete(new OnComplete<Void>() { @Override public void onComplete(Throwable throwable, Void aVoid) throws Throwable { if (throwable == null) { settableFuture.set(aVoid); } else { settableFuture.setException(throwable); } } }, actorSystem.dispatcher()); return checkedFuture; }
From source file:org.opendaylight.openflowjava.protocol.impl.connection.ConnectionAdapterImpl.java
@Override public void consume(DataObject message) { LOG.debug("ConsumeIntern msg"); if (disconnectOccured) { return;/* www . j a v a 2 s .com*/ } if (message instanceof Notification) { // System events if (message instanceof DisconnectEvent) { systemListener.onDisconnectEvent((DisconnectEvent) message); responseCache.invalidateAll(); disconnectOccured = true; } else if (message instanceof SwitchIdleEvent) { systemListener.onSwitchIdleEvent((SwitchIdleEvent) message); } // OpenFlow messages else if (message instanceof EchoRequestMessage) { messageListener.onEchoRequestMessage((EchoRequestMessage) message); } else if (message instanceof ErrorMessage) { messageListener.onErrorMessage((ErrorMessage) message); } else if (message instanceof ExperimenterMessage) { messageListener.onExperimenterMessage((ExperimenterMessage) message); } else if (message instanceof FlowRemovedMessage) { messageListener.onFlowRemovedMessage((FlowRemovedMessage) message); } else if (message instanceof HelloMessage) { LOG.info("Hello received / branch"); messageListener.onHelloMessage((HelloMessage) message); } else if (message instanceof MultipartReplyMessage) { messageListener.onMultipartReplyMessage((MultipartReplyMessage) message); } else if (message instanceof PacketInMessage) { messageListener.onPacketInMessage((PacketInMessage) message); } else if (message instanceof PortStatusMessage) { messageListener.onPortStatusMessage((PortStatusMessage) message); } else { LOG.warn("message listening not supported for type: " + message.getClass()); } } else { if (message instanceof OfHeader) { LOG.debug("OFheader msg received"); RpcResponseKey key = createRpcResponseKey((OfHeader) message); final SettableFuture<RpcResult<?>> rpcFuture = findRpcResponse(key); if (rpcFuture != null) { LOG.debug("corresponding rpcFuture found"); List<RpcError> errors = Collections.emptyList(); LOG.debug("before setting rpcFuture"); rpcFuture.set(Rpcs.getRpcResult(true, message, errors)); LOG.debug("after setting rpcFuture"); responseCache.invalidate(key); } else { LOG.warn("received unexpected rpc response: " + key); } } else { LOG.warn("message listening not supported for type: " + message.getClass()); } } }