org.elasticsearch.action.ActionListener类的使用及代码示例

x33g5p2x  于2022-01-16 转载在 其他  
字(13.3k)|赞(0)|评价(0)|浏览(373)

本文整理了Java中org.elasticsearch.action.ActionListener类的一些代码示例,展示了ActionListener类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ActionListener类的具体详情如下:
包路径:org.elasticsearch.action.ActionListener
类名称:ActionListener

ActionListener介绍

[英]A listener for action responses or failures.
[中]操作响应或失败的侦听器。

代码示例

代码示例来源:origin: org.elasticsearch/elasticsearch

private void onFreedContext(boolean freed) {
  if (freed) {
    freedSearchContexts.incrementAndGet();
  }
  if (expectedOps.countDown()) {
    boolean succeeded = hasFailed.get() == false;
    listener.onResponse(new ClearScrollResponse(succeeded, freedSearchContexts.get()));
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
public void onResponse(T element) {
  results.setOnce(pos.incrementAndGet() - 1, element);
  if (countDown.countDown()) {
    if (failure.get() != null) {
      delegate.onFailure(failure.get());
    } else {
      List<T> collect = this.results.asList();
      collect.addAll(defaults);
      delegate.onResponse(Collections.unmodifiableList(collect));
    }
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
  public void onFailure(Exception e) {
    if (!(ExceptionsHelper.unwrapCause(e) instanceof ResourceAlreadyExistsException)) {
      // fail all requests involving this index, if create didn't work
      for (int i = 0; i < bulkRequest.requests.size(); i++) {
        DocWriteRequest request = bulkRequest.requests.get(i);
        if (request != null && setResponseFailureIfIndexMatches(responses, i, request, index, e)) {
          bulkRequest.requests.set(i, null);
        }
      }
    }
    if (counter.decrementAndGet() == 0) {
      executeIngestAndBulk(task, bulkRequest, startTime, ActionListener.wrap(listener::onResponse, inner -> {
        inner.addSuppressed(e);
        listener.onFailure(inner);
      }), responses, indicesThatCannotBeCreated);
    }
  }
});

代码示例来源:origin: org.elasticsearch/elasticsearch

public void respond(ActionListener<TransportResponse.Empty> listener) {
    if (finalFailure == null) {
      listener.onResponse(TransportResponse.Empty.INSTANCE);
    } else {
      listener.onFailure(finalFailure);
    }
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
  public void onTimeout(TimeValue timeout) {
    try {
      listener.onResponse(new ClusterStateResponse(clusterState.getClusterName(), null, 0L, true));
    } catch (Exception e) {
      listener.onFailure(e);
    }
  }
}, metadataVersionPredicate);

代码示例来源:origin: org.elasticsearch/elasticsearch

/**
 * Executes an asynchronous persistent task action using the client.
 * <p>
 * The origin is set in the context and the listener is wrapped to ensure the proper context is restored
 */
private <Req extends ActionRequest, Resp extends PersistentTaskResponse, Builder extends ActionRequestBuilder<Req, Resp, Builder>>
  void execute(final Req request, final Action<Req, Resp, Builder> action, final ActionListener<PersistentTask<?>> listener) {
    try {
      client.execute(action, request,
          ActionListener.wrap(r -> listener.onResponse(r.getTask()), listener::onFailure));
    } catch (Exception e) {
      listener.onFailure(e);
    }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

task.setResyncedOperations(totalSentOps.get());
task.setSkippedOperations(totalSkippedOps.get());
  if (startingSeqNo >= 0 &&
    (seqNo == SequenceNumbers.UNASSIGNED_SEQ_NO || seqNo < startingSeqNo)) {
    totalSkippedOps.incrementAndGet();
    continue;
  ResyncReplicationRequest request =
    new ResyncReplicationRequest(shardId, trimmedAboveSeqNo, maxSeenAutoIdTimestamp, operations.toArray(EMPTY_ARRAY));
  logger.trace("{} sending batch of [{}][{}] (total sent: [{}], skipped: [{}])", shardId, operations.size(),
    new ByteSizeValue(size), totalSentOps.get(), totalSkippedOps.get());
  firstMessage.set(false);
  syncAction.sync(request, task, primaryAllocationId, primaryTerm, this);
} else if (closed.compareAndSet(false, true)) {
  logger.trace("{} resync completed (total sent: [{}], skipped: [{}])", shardId, totalSentOps.get(), totalSkippedOps.get());
  listener.onResponse(null);

代码示例来源:origin: org.elasticsearch/elasticsearch

private void onFailedFreedContext(Throwable e, DiscoveryNode node) {
    logger.warn(() -> new ParameterizedMessage("Clear SC failed on node[{}]", node), e);
    /*
     * We have to set the failure marker before we count down otherwise we can expose the failure marker before we have set it to a
     * racing thread successfully freeing a context. This would lead to that thread responding that the clear scroll succeeded.
     */
    hasFailed.set(true);
    if (expectedOps.countDown()) {
      listener.onResponse(new ClearScrollResponse(false, freedSearchContexts.get()));
    }
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

protected void onShardFailure(String phaseName, final CountDown counter, final long searchId, Exception failure,
               @Nullable SearchShardTarget searchShardTarget,
               Supplier<SearchPhase> nextPhaseSupplier) {
  if (logger.isDebugEnabled()) {
    logger.debug(new ParameterizedMessage("[{}] Failed to execute {} phase", searchId, phaseName), failure);
  }
  addShardFailure(new ShardSearchFailure(failure, searchShardTarget));
  int successfulOperations = successfulOps.decrementAndGet();
  assert successfulOperations >= 0 : "successfulOperations must be >= 0 but was: " + successfulOperations;
  if (counter.countDown()) {
    if (successfulOps.get() == 0) {
      listener.onFailure(new SearchPhaseExecutionException(phaseName, "all shards failed", failure, buildShardFailures()));
    } else {
      SearchPhase phase = nextPhaseSupplier.get();
      try {
        phase.run();
      } catch (Exception e) {
        e.addSuppressed(failure);
        listener.onFailure(new SearchPhaseExecutionException(phase.getName(), "Phase failed", e,
          ShardSearchFailure.EMPTY_ARRAY));
      }
    }
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
  public void onFailure(Exception e) {
    int index = indexCounter.getAndIncrement();
    indexResponses.set(index, e);
    if (completionCounter.decrementAndGet() == 0) {
      listener.onResponse(merge(indexResponses));
    }
  }
});

代码示例来源:origin: org.elasticsearch/elasticsearch

private void finish() {
  if (finished.compareAndSet(false, true)) {
    final ReplicationResponse.ShardInfo.Failure[] failuresArray;
    if (shardReplicaFailures.isEmpty()) {
      failuresArray = ReplicationResponse.EMPTY;
    } else {
      failuresArray = new ReplicationResponse.ShardInfo.Failure[shardReplicaFailures.size()];
      shardReplicaFailures.toArray(failuresArray);
    }
    primaryResult.setShardInfo(new ReplicationResponse.ShardInfo(
        totalShards.get(),
        successfulShards.get(),
        failuresArray
      )
    );
    resultListener.onResponse(primaryResult);
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

protected final void sendResponse(SearchPhaseController.ReducedQueryPhase queryPhase,
                 final AtomicArray<? extends SearchPhaseResult> fetchResults) {
  try {
    final InternalSearchResponse internalResponse = searchPhaseController.merge(true, queryPhase, fetchResults.asList(),
      fetchResults::get);
    // the scroll ID never changes we always return the same ID. This ID contains all the shards and their context ids
    // such that we can talk to them abgain in the next roundtrip.
    String scrollId = null;
    if (request.scroll() != null) {
      scrollId = request.scrollId();
    }
    listener.onResponse(new SearchResponse(internalResponse, scrollId, this.scrollId.getContext().length, successfulOps.get(),
      0, buildTookInMillis(), buildShardFailures(), SearchResponse.Clusters.EMPTY));
  } catch (Exception e) {
    listener.onFailure(new ReduceSearchPhaseException("fetch", "inner finish failed", e, buildShardFailures()));
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

final boolean canceled;
if (cancellableTask.shouldCancelChildrenOnCancellation()) {
  DiscoveryNodes childNodes = clusterService.state().nodes();
  final BanLock banLock = new BanLock(childNodes.getSize(), () -> removeBanOnNodes(cancellableTask, childNodes));
  canceled = taskManager.cancel(cancellableTask, request.getReason(), banLock::onTaskFinished);
  if (canceled) {
    logger.trace("cancelling task {} on child nodes", cancellableTask.getId());
    AtomicInteger responses = new AtomicInteger(childNodes.getSize());
    List<Exception> failures = new ArrayList<>();
    setBanOnNodes(request.getReason(), cancellableTask, childNodes, new ActionListener<Void>() {
    () -> listener.onResponse(cancellableTask.taskInfo(nodeId, false)));
  if (canceled) {
    logger.trace("task {} doesn't have any children that should be cancelled", cancellableTask.getId());
  logger.trace("task {} is already cancelled", cancellableTask.getId());
  throw new IllegalStateException("task with id " + cancellableTask.getId() + " is already cancelled");

代码示例来源:origin: org.elasticsearch/elasticsearch

processTasks(request, tasks::add);
if (tasks.isEmpty()) {
  listener.onResponse(new NodeTasksResponse(clusterService.localNode().getId(), emptyList(), emptyList()));
  return;
final AtomicInteger counter = new AtomicInteger(tasks.size());
for (int i = 0; i < tasks.size(); i++) {
  final int taskIndex = i;
    taskOperation(request, tasks.get(taskIndex), taskListener);
  } catch (Exception e) {
    taskListener.onFailure(e);

代码示例来源:origin: org.elasticsearch/elasticsearch

ClusterState clusterState = clusterService.state();
String[] concreteIndices = indexNameExpressionResolver.concreteIndexNames(clusterState, request);
final AtomicInteger indexCounter = new AtomicInteger();
final AtomicInteger completionCounter = new AtomicInteger(concreteIndices.length);
final AtomicReferenceArray<Object> indexResponses = new AtomicReferenceArray<>(concreteIndices.length);
  listener.onResponse(new GetFieldMappingsResponse());
} else {
  boolean probablySingleFieldRequest = concreteIndices.length == 1 && request.types().length == 1 && request.fields().length == 1;

代码示例来源:origin: org.elasticsearch/elasticsearch

MetaData metaData = clusterState.metaData();
for (int i = 0; i < bulkRequest.requests.size(); i++) {
  DocWriteRequest docWriteRequest = bulkRequest.requests.get(i);
      case INDEX:
        IndexRequest indexRequest = (IndexRequest) docWriteRequest;
        final IndexMetaData indexMetaData = metaData.index(concreteIndex);
        MappingMetaData mappingMd = indexMetaData.mappingOrDefault(indexRequest.type());
        Version indexCreated = indexMetaData.getCreationVersion();
        break;
      case DELETE:
        docWriteRequest.routing(metaData.resolveWriteIndexRouting(docWriteRequest.parent(), docWriteRequest.routing(),
          docWriteRequest.index()));
        if (docWriteRequest.routing() == null && metaData.routingRequired(concreteIndex.getName(),
          docWriteRequest.type())) {
          throw new RoutingMissingException(concreteIndex.getName(), docWriteRequest.type(), docWriteRequest.id());
  listener.onResponse(new BulkResponse(responses.toArray(new BulkItemResponse[responses.length()]),
    buildTookInMillis(startTimeNanos)));
  return;
final AtomicInteger counter = new AtomicInteger(requestsByShard.size());
String nodeId = clusterService.localNode().getId();
for (Map.Entry<ShardId, List<BulkItemRequest>> entry : requestsByShard.entrySet()) {

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
public void proceed(Task task, String actionName, Request request, ActionListener<Response> listener) {
  int i = index.getAndIncrement();
  try {
    if (i < this.action.filters.length) {
      this.action.filters[i].apply(task, actionName, request, listener, this);
    } else if (i == this.action.filters.length) {
      this.action.doExecute(task, request, listener);
    } else {
      listener.onFailure(new IllegalStateException("proceed was called too many times"));
    }
  } catch(Exception e) {
    logger.trace("Error during transport action execution.", e);
    listener.onFailure(e);
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

private void processResponse() {
    banLock.onBanSet();
    if (responses.decrementAndGet() == 0) {
      if (failures.isEmpty() == false) {
        IllegalStateException exception = new IllegalStateException("failed to cancel children of the task [" +
          cancellableTask.getId() + "]");
        failures.forEach(exception::addSuppressed);
        listener.onFailure(exception);
      } else {
        listener.onResponse(cancellableTask.taskInfo(nodeId, false));
      }
    }
  }
});

代码示例来源:origin: floragunncom/search-guard

if(actionTrace.isTraceEnabled()) {
  actionTrace.trace("Node "+cs.localNode().getName()+" -> "+action+" ("+count+"): userIsAdmin="+userIsAdmin+"/conRequest="+confRequest+"/internalRequest="+internalRequest
      +"origin="+threadContext.getTransient(ConfigConstants.SG_ORIGIN)+"/directRequest="+HeaderHelper.isDirectRequest(threadContext)+"/remoteAddress="+request.remoteAddress());
  log.error("No user found for "+ action+" from "+request.remoteAddress()+" "+threadContext.getTransient(ConfigConstants.SG_ORIGIN)+" via "+threadContext.getTransient(ConfigConstants.SG_CHANNEL_TYPE)+" "+threadContext.getHeaders());
  listener.onFailure(new ElasticsearchSecurityException("No user found for "+action, RestStatus.INTERNAL_SERVER_ERROR));
  return;
  log.error("Search Guard not initialized (SG11) for {}", action);
  listener.onFailure(new ElasticsearchSecurityException("Search Guard not initialized (SG11) for "
  + action+". See http://docs.search-guard.com/v6/sgadmin", RestStatus.SERVICE_UNAVAILABLE));
  return;
  auditLog.logMissingPrivileges(action, request, task);
  log.debug("no permissions for {}", pres.getMissingPrivileges());
  listener.onFailure(new ElasticsearchSecurityException("no permissions for " + pres.getMissingPrivileges()+" and "+user, RestStatus.FORBIDDEN));
  return;
log.error("Unexpected exception "+e, e);
listener.onFailure(new ElasticsearchSecurityException("Unexpected exception " + action, RestStatus.INTERNAL_SERVER_ERROR));
return;

代码示例来源:origin: org.elasticsearch/elasticsearch

private void respondIfFinished() {
    if (counter.decrementAndGet() != 0) {
      return;
    }
    List<TaskResponse> results = new ArrayList<>();
    List<TaskOperationFailure> exceptions = new ArrayList<>();
    for (Tuple<TaskResponse, Exception> response : responses.asList()) {
      if (response.v1() == null) {
        assert response.v2() != null;
        exceptions.add(new TaskOperationFailure(clusterService.localNode().getId(), tasks.get(taskIndex).getId(),
            response.v2()));
      } else {
        assert response.v2() == null;
        results.add(response.v1());
      }
    }
    listener.onResponse(new NodeTasksResponse(clusterService.localNode().getId(), results, exceptions));
  }
};

相关文章