public static <T> PlainActionFuture<T> newFuture() { return new PlainActionFuture<>(); }
/** * Connects to all remote clusters in a blocking fashion. This should be called on node startup to establish an initial connection * to all configured seed nodes. */ void initializeRemoteClusters() { final TimeValue timeValue = REMOTE_INITIAL_CONNECTION_TIMEOUT_SETTING.get(settings); final PlainActionFuture<Void> future = new PlainActionFuture<>(); Map<String, Tuple<String, List<Tuple<String, Supplier<DiscoveryNode>>>>> seeds = RemoteClusterAware.buildRemoteClustersDynamicConfig(settings); updateRemoteClusters(seeds, future); try { future.get(timeValue.millis(), TimeUnit.MILLISECONDS); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } catch (TimeoutException ex) { logger.warn("failed to connect to remote clusters within {}", timeValue.toString()); } catch (Exception e) { throw new IllegalStateException("failed to connect to remote clusters", e); } }
} else { logger.trace("waiting for cluster state version {} (current: {})", clusterStateVersion, clusterState.getVersion()); final PlainActionFuture<Long> future = new PlainActionFuture<>(); observer.waitForNextChange(new ClusterStateObserver.Listener() {
@Override protected WritePrimaryResult<BulkShardRequest, BulkShardResponse> shardOperationOnPrimary(BulkShardRequest request, IndexShard primary) throws Exception { ClusterStateObserver observer = new ClusterStateObserver(clusterService, request.timeout(), logger, threadPool.getThreadContext()); CheckedRunnable<Exception> waitForMappingUpdate = () -> { PlainActionFuture<Void> waitingFuture = new PlainActionFuture<>(); observer.waitForNextChange(new ClusterStateObserver.Listener() { @Override public void onNewClusterState(ClusterState state) { waitingFuture.onResponse(null); } @Override public void onClusterServiceClose() { waitingFuture.onFailure(new NodeClosedException(clusterService.localNode())); } @Override public void onTimeout(TimeValue timeout) { waitingFuture.onFailure( new MapperException("timed out while waiting for a dynamic mapping update")); } }); waitingFuture.get(); }; return performOnPrimary(request, primary, updateHelper, threadPool::absoluteTimeInMillis, new ConcreteMappingUpdatePerformer(), waitForMappingUpdate); }
@Override public ActionFuture<PercolateResponse> percolate(final PercolateRequest request) { PlainActionFuture<PercolateResponse> future = new PlainActionFuture<PercolateResponse>(); percolate(request, future); return future; }
@Override public ActionFuture<ExistsResponse> exists(final ExistsRequest request) { final PlainActionFuture<ExistsResponse> future = new PlainActionFuture<ExistsResponse>(); exists(request, future); return future; }
@Override public ActionFuture<IndexResponse> index(final IndexRequest request) { PlainActionFuture<IndexResponse> future = new PlainActionFuture<IndexResponse>(); index(request, future); return future; }
@Override public ActionFuture<SearchResponse> moreLikeThis(final MoreLikeThisRequest request) { PlainActionFuture<SearchResponse> future = new PlainActionFuture<SearchResponse>(); moreLikeThis(request, future); return future; }
@Override public ActionFuture<ExistsResponse> exists(final ExistsRequest request) { final PlainActionFuture<ExistsResponse> future = new PlainActionFuture<ExistsResponse>(); exists(request, future); return future; }
@Override public ActionFuture<BulkResponse> bulk(final BulkRequest request) { PlainActionFuture<BulkResponse> future = new PlainActionFuture<BulkResponse>(); bulk(request, future); return future; }
@Override public ActionFuture<CountResponse> count(final CountRequest request) { PlainActionFuture<CountResponse> future = new PlainActionFuture<CountResponse>(); count(request, future); return future; }
@Override public ActionFuture<ExplainResponse> explain(final ExplainRequest request) { PlainActionFuture<ExplainResponse> future = new PlainActionFuture<ExplainResponse>(); explain(request, future); return future; }
@Override public ActionFuture<MultiTermVectorsResponse> multiTermVectors(final MultiTermVectorsRequest request) { final PlainActionFuture<MultiTermVectorsResponse> future = new PlainActionFuture<MultiTermVectorsResponse>(); multiTermVectors(request, future); return future; }
@Override public ActionFuture<DeleteResponse> delete(final DeleteRequest request) { PlainActionFuture<DeleteResponse> future = new PlainActionFuture<DeleteResponse>(); delete(request, future); return future; }
@Override public ActionFuture<BulkResponse> bulk(final BulkRequest request) { PlainActionFuture<BulkResponse> future = new PlainActionFuture<BulkResponse>(); bulk(request, future); return future; }
@Override public ActionFuture<SearchResponse> search(final SearchRequest request) { PlainActionFuture<SearchResponse> future = new PlainActionFuture<SearchResponse>(); search(request, future); return future; }
@Override public ActionFuture<SearchResponse> searchScroll(final SearchScrollRequest request) { PlainActionFuture<SearchResponse> future = new PlainActionFuture<SearchResponse>(); searchScroll(request, future); return future; }
@Override public ActionFuture<MultiSearchResponse> multiSearch(final MultiSearchRequest request) { PlainActionFuture<MultiSearchResponse> future = new PlainActionFuture<MultiSearchResponse>(); multiSearch(request, future); return future; }
@Override public ActionFuture<PercolateResponse> percolate(final PercolateRequest request) { PlainActionFuture<PercolateResponse> future = new PlainActionFuture<PercolateResponse>(); percolate(request, future); return future; }
@Override public ActionFuture<GetIndexedScriptResponse> getIndexedScript(final GetIndexedScriptRequest request) { final PlainActionFuture<GetIndexedScriptResponse> future = new PlainActionFuture<GetIndexedScriptResponse>(); getIndexedScript(request, future); return future; }