org.elasticsearch.cluster.ClusterState.builder()方法的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(16.7k)|赞(0)|评价(0)|浏览(131)

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

ClusterState.builder介绍

暂无

代码示例

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

/**
 * Creates a new cluster state builder that is initialized with the cluster name and all initial cluster state customs.
 */
public ClusterState.Builder newClusterStateBuilder() {
  ClusterState.Builder builder = ClusterState.builder(ClusterName.CLUSTER_NAME_SETTING.get(settings));
  for (Map.Entry<String, Supplier<ClusterState.Custom>> entry : initialClusterStateCustoms.entrySet()) {
    builder.putCustom(entry.getKey(), entry.getValue().get());
  }
  return builder;
}

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

ClusterState remainingNodesClusterState(final ClusterState currentState, DiscoveryNodes.Builder remainingNodesBuilder) {
  return ClusterState.builder(currentState).nodes(remainingNodesBuilder).build();
}

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

@Override
public synchronized void startInitialJoin() {
  if (lifecycle.started() == false) {
    throw new IllegalStateException("can't start initial join when not started");
  }
  // apply a fresh cluster state just so that state recovery gets triggered by GatewayService
  // TODO: give discovery module control over GatewayService
  clusterState = ClusterState.builder(clusterState).build();
  clusterApplier.onNewClusterState("single-node-start-initial-join", () -> clusterState, (source, e) -> {});
}

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

@Override
public ClusterState execute(ClusterState currentState) {
  SnapshotsInProgress snapshots = currentState.custom(SnapshotsInProgress.TYPE);
  if (snapshots != null) {
    boolean changed = false;
    ArrayList<SnapshotsInProgress.Entry> entries = new ArrayList<>();
    for (SnapshotsInProgress.Entry entry : snapshots.entries()) {
      if (entry.snapshot().equals(snapshot)) {
        changed = true;
      } else {
        entries.add(entry);
      }
    }
    if (changed) {
      snapshots = new SnapshotsInProgress(entries.toArray(new SnapshotsInProgress.Entry[entries.size()]));
      return ClusterState.builder(currentState).putCustom(SnapshotsInProgress.TYPE, snapshots).build();
    }
  }
  return currentState;
}

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

@Override
public ClusterState execute(ClusterState currentState) {
  SnapshotDeletionsInProgress deletions = currentState.custom(SnapshotDeletionsInProgress.TYPE);
  if (deletions != null) {
    boolean changed = false;
    if (deletions.hasDeletionsInProgress()) {
      assert deletions.getEntries().size() == 1 : "should have exactly one deletion in progress";
      SnapshotDeletionsInProgress.Entry entry = deletions.getEntries().get(0);
      deletions = deletions.withRemovedEntry(entry);
      changed = true;
    }
    if (changed) {
      return ClusterState.builder(currentState).putCustom(SnapshotDeletionsInProgress.TYPE, deletions).build();
    }
  }
  return currentState;
}

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

/**
 * For interoperability with transport clients older than 6.3, we need to strip customs
 * from the cluster state that the client might not be able to deserialize
 *
 * @param clusterState the cluster state to filter the customs from
 * @return the adapted cluster state
 */
public static ClusterState filterCustomsForPre63Clients(ClusterState clusterState) {
  final ClusterState.Builder builder = ClusterState.builder(clusterState);
  clusterState.customs().keysIt().forEachRemaining(name -> {
    if (PRE_6_3_CLUSTER_CUSTOMS_WHITE_LIST.contains(name) == false) {
      builder.removeCustom(name);
    }
  });
  final MetaData.Builder metaBuilder = MetaData.builder(clusterState.metaData());
  clusterState.metaData().customs().keysIt().forEachRemaining(name -> {
    if (PRE_6_3_METADATA_CUSTOMS_WHITE_LIST.contains(name) == false) {
      metaBuilder.removeCustom(name);
    }
  });
  return builder.metaData(metaBuilder).build();
}

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

@Override
public ClusterState execute(ClusterState currentState) {
  Set<String> templateNames = new HashSet<>();
  for (ObjectCursor<String> cursor : currentState.metaData().templates().keys()) {
    String templateName = cursor.value;
    if (Regex.simpleMatch(request.name, templateName)) {
      templateNames.add(templateName);
    }
  }
  if (templateNames.isEmpty()) {
    // if its a match all pattern, and no templates are found (we have none), don't
    // fail with index missing...
    if (Regex.isMatchAllPattern(request.name)) {
      return currentState;
    }
    throw new IndexTemplateMissingException(request.name);
  }
  MetaData.Builder metaData = MetaData.builder(currentState.metaData());
  for (String templateName : templateNames) {
    logger.info("removing template [{}]", templateName);
    metaData.removeTemplate(templateName);
  }
  return ClusterState.builder(currentState).metaData(metaData).build();
}

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

static ClusterState innerDelete(DeletePipelineRequest request, ClusterState currentState) {
  IngestMetadata currentIngestMetadata = currentState.metaData().custom(IngestMetadata.TYPE);
  if (currentIngestMetadata == null) {
    return currentState;
  }
  Map<String, PipelineConfiguration> pipelines = currentIngestMetadata.getPipelines();
  Set<String> toRemove = new HashSet<>();
  for (String pipelineKey : pipelines.keySet()) {
    if (Regex.simpleMatch(request.getId(), pipelineKey)) {
      toRemove.add(pipelineKey);
    }
  }
  if (toRemove.isEmpty() && Regex.isMatchAllPattern(request.getId()) == false) {
    throw new ResourceNotFoundException("pipeline [{}] is missing", request.getId());
  } else if (toRemove.isEmpty()) {
    return currentState;
  }
  final Map<String, PipelineConfiguration> pipelinesCopy = new HashMap<>(pipelines);
  for (String key : toRemove) {
    pipelinesCopy.remove(key);
  }
  ClusterState.Builder newState = ClusterState.builder(currentState);
  newState.metaData(MetaData.builder(currentState.getMetaData())
      .putCustom(IngestMetadata.TYPE, new IngestMetadata(pipelinesCopy))
      .build());
  return newState.build();
}

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

@Override
public ClusterTasksResult<Task> execute(final ClusterState currentState, final List<Task> tasks) throws Exception {
  final ClusterTasksResult.Builder<Task> resultBuilder = ClusterTasksResult.<Task>builder().successes(tasks);
  Set<String> completedRestores = tasks.stream().map(e -> e.uuid).collect(Collectors.toSet());
  RestoreInProgress.Builder restoreInProgressBuilder = new RestoreInProgress.Builder();
  final RestoreInProgress restoreInProgress = currentState.custom(RestoreInProgress.TYPE);
  boolean changed = false;
  if (restoreInProgress != null) {
    for (RestoreInProgress.Entry entry : restoreInProgress) {
      if (completedRestores.contains(entry.uuid())) {
        changed = true;
      } else {
        restoreInProgressBuilder.add(entry);
      }
    }
  }
  if (changed == false) {
    return resultBuilder.build(currentState);
  }
  ImmutableOpenMap.Builder<String, ClusterState.Custom> builder = ImmutableOpenMap.builder(currentState.getCustoms());
  builder.put(RestoreInProgress.TYPE, restoreInProgressBuilder.build());
  ImmutableOpenMap<String, ClusterState.Custom> customs = builder.build();
  return resultBuilder.build(ClusterState.builder(currentState).customs(customs).build());
}

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

private static ClusterState update(ClusterState currentState, PersistentTasksCustomMetaData.Builder tasksInProgress) {
  if (tasksInProgress.isChanged()) {
    return ClusterState.builder(currentState).metaData(
        MetaData.builder(currentState.metaData()).putCustom(PersistentTasksCustomMetaData.TYPE, tasksInProgress.build())
    ).build();
  } else {
    return currentState;
  }
}

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

static ClusterState innerPut(PutPipelineRequest request, ClusterState currentState) {
  IngestMetadata currentIngestMetadata = currentState.metaData().custom(IngestMetadata.TYPE);
  Map<String, PipelineConfiguration> pipelines;
  if (currentIngestMetadata != null) {
    pipelines = new HashMap<>(currentIngestMetadata.getPipelines());
  } else {
    pipelines = new HashMap<>();
  }
  pipelines.put(request.getId(), new PipelineConfiguration(request.getId(), request.getSource(), request.getXContentType()));
  ClusterState.Builder newState = ClusterState.builder(currentState);
  newState.metaData(MetaData.builder(currentState.getMetaData())
    .putCustom(IngestMetadata.TYPE, new IngestMetadata(pipelines))
    .build());
  return newState.build();
}

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

@Override
  public ClusterState execute(ClusterState currentState) {
    MetaData.Builder metaDataBuilder = MetaData.builder(currentState.metaData());
    for (Map.Entry<String, Tuple<Version, String>> entry : request.versions().entrySet()) {
      String index = entry.getKey();
      IndexMetaData indexMetaData = metaDataBuilder.get(index);
      if (indexMetaData != null) {
        if (Version.CURRENT.equals(indexMetaData.getCreationVersion()) == false) {
          // no reason to pollute the settings, we didn't really upgrade anything
          metaDataBuilder.put(
              IndexMetaData
                  .builder(indexMetaData)
                  .settings(
                      Settings
                          .builder()
                          .put(indexMetaData.getSettings())
                          .put(IndexMetaData.SETTING_VERSION_UPGRADED, entry.getValue().v1()))
                  .settingsVersion(1 + indexMetaData.getSettingsVersion()));
        }
      }
    }
    return ClusterState.builder(currentState).metaData(metaDataBuilder).build();
  }
});

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

@Override
  public ClusterState execute(ClusterState currentState) throws Exception {
    ScriptMetaData smd = currentState.metaData().custom(ScriptMetaData.TYPE);
    smd = ScriptMetaData.putStoredScript(smd, request.id(), source);
    MetaData.Builder mdb = MetaData.builder(currentState.getMetaData()).putCustom(ScriptMetaData.TYPE, smd);
    return ClusterState.builder(currentState).metaData(mdb).build();
  }
});

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

@Override
  public ClusterState execute(ClusterState currentState) throws Exception {
    ScriptMetaData smd = currentState.metaData().custom(ScriptMetaData.TYPE);
    smd = ScriptMetaData.deleteStoredScript(smd, request.id());
    MetaData.Builder mdb = MetaData.builder(currentState.getMetaData()).putCustom(ScriptMetaData.TYPE, smd);
    return ClusterState.builder(currentState).metaData(mdb).build();
  }
});

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

@Override
public ClusterState execute(ClusterState currentState) {
  validate(request, currentState);
  SnapshotDeletionsInProgress deletionsInProgress = currentState.custom(SnapshotDeletionsInProgress.TYPE);
  if (deletionsInProgress != null && deletionsInProgress.hasDeletionsInProgress()) {
    throw new ConcurrentSnapshotExecutionException(repositoryName, snapshotName,
      "cannot snapshot while a snapshot deletion is in-progress");
  }
  SnapshotsInProgress snapshots = currentState.custom(SnapshotsInProgress.TYPE);
  if (snapshots == null || snapshots.entries().isEmpty()) {
    // Store newSnapshot here to be processed in clusterStateProcessed
    List<String> indices = Arrays.asList(indexNameExpressionResolver.concreteIndexNames(currentState, request.indicesOptions(), request.indices()));
    logger.trace("[{}][{}] creating snapshot for indices [{}]", repositoryName, snapshotName, indices);
    List<IndexId> snapshotIndices = repositoryData.resolveNewIndices(indices);
    newSnapshot = new SnapshotsInProgress.Entry(new Snapshot(repositoryName, snapshotId),
                          request.includeGlobalState(),
                          request.partial(),
                          State.INIT,
                          snapshotIndices,
                          System.currentTimeMillis(),
                          repositoryData.getGenId(),
                          null);
    snapshots = new SnapshotsInProgress(newSnapshot);
  } else {
    throw new ConcurrentSnapshotExecutionException(repositoryName, snapshotName, " a snapshot is already running");
  }
  return ClusterState.builder(currentState).putCustom(SnapshotsInProgress.TYPE, snapshots).build();
}

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

@Override
public ClusterState execute(ClusterState currentState) throws Exception {
  if (request.create && currentState.metaData().templates().containsKey(request.name)) {
    throw new IllegalArgumentException("index_template [" + request.name + "] already exists");
  }
  validateAndAddTemplate(request, templateBuilder, indicesService, xContentRegistry);
  for (Alias alias : request.aliases) {
    AliasMetaData aliasMetaData = AliasMetaData.builder(alias.name()).filter(alias.filter())
      .indexRouting(alias.indexRouting()).searchRouting(alias.searchRouting()).build();
    templateBuilder.putAlias(aliasMetaData);
  }
  IndexTemplateMetaData template = templateBuilder.build();
  MetaData.Builder builder = MetaData.builder(currentState.metaData()).put(template);
  logger.info("adding template [{}] for index patterns {}", request.name, request.indexPatterns);
  return ClusterState.builder(currentState).metaData(builder).build();
}

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

protected void rejoin(String reason) {
  assert Thread.holdsLock(stateMutex);
  ClusterState clusterState = committedState.get();
  logger.warn("{}, current nodes: {}", reason, clusterState.nodes());
  nodesFD.stop();
  masterFD.stop(reason);
  // TODO: do we want to force a new thread if we actively removed the master? this is to give a full pinging cycle
  // before a decision is made.
  joinThreadControl.startNewThreadIfNotRunning();
  if (clusterState.nodes().getMasterNodeId() != null) {
    // remove block if it already exists before adding new one
    assert clusterState.blocks().hasGlobalBlock(discoverySettings.getNoMasterBlock().id()) == false :
      "NO_MASTER_BLOCK should only be added by ZenDiscovery";
    ClusterBlocks clusterBlocks = ClusterBlocks.builder().blocks(clusterState.blocks())
      .addGlobalBlock(discoverySettings.getNoMasterBlock())
      .build();
    DiscoveryNodes discoveryNodes = new DiscoveryNodes.Builder(clusterState.nodes()).masterNodeId(null).build();
    clusterState = ClusterState.builder(clusterState)
      .blocks(clusterBlocks)
      .nodes(discoveryNodes)
      .build();
    committedState.set(clusterState);
    clusterApplier.onNewClusterState(reason, this::clusterState, (source, e) -> {}); // don't wait for state to be applied
  }
}

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

private ClusterState.Builder becomeMasterAndTrimConflictingNodes(ClusterState currentState, List<DiscoveryNode> joiningNodes) {
  assert currentState.nodes().getMasterNodeId() == null : currentState;
  DiscoveryNodes currentNodes = currentState.nodes();
  DiscoveryNodes.Builder nodesBuilder = DiscoveryNodes.builder(currentNodes);
  nodesBuilder.masterNodeId(currentState.nodes().getLocalNodeId());
  for (final DiscoveryNode joiningNode : joiningNodes) {
    final DiscoveryNode nodeWithSameId = nodesBuilder.get(joiningNode.getId());
    if (nodeWithSameId != null && nodeWithSameId.equals(joiningNode) == false) {
      logger.debug("removing existing node [{}], which conflicts with incoming join from [{}]", nodeWithSameId, joiningNode);
      nodesBuilder.remove(nodeWithSameId.getId());
    }
    final DiscoveryNode nodeWithSameAddress = currentNodes.findByAddress(joiningNode.getAddress());
    if (nodeWithSameAddress != null && nodeWithSameAddress.equals(joiningNode) == false) {
      logger.debug("removing existing node [{}], which conflicts with incoming join from [{}]", nodeWithSameAddress,
        joiningNode);
      nodesBuilder.remove(nodeWithSameAddress.getId());
    }
  }
  // now trim any left over dead nodes - either left there when the previous master stepped down
  // or removed by us above
  ClusterState tmpState = ClusterState.builder(currentState).nodes(nodesBuilder).blocks(ClusterBlocks.builder()
    .blocks(currentState.blocks())
    .removeGlobalBlock(DiscoverySettings.NO_MASTER_BLOCK_ID)).build();
  return ClusterState.builder(allocationService.deassociateDeadNodes(tmpState, false,
    "removed dead nodes on election"));
}

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

private ClusterState patchVersions(ClusterState previousClusterState, ClusterTasksResult<?> executionResult) {
  ClusterState newClusterState = executionResult.resultingState;
  if (previousClusterState != newClusterState) {
    // only the master controls the version numbers
    Builder builder = ClusterState.builder(newClusterState).incrementVersion();
    if (previousClusterState.routingTable() != newClusterState.routingTable()) {
      builder.routingTable(RoutingTable.builder(newClusterState.routingTable())
        .version(newClusterState.routingTable().version() + 1).build());
    }
    if (previousClusterState.metaData() != newClusterState.metaData()) {
      builder.metaData(MetaData.builder(newClusterState.metaData()).version(newClusterState.metaData().version() + 1));
    }
    newClusterState = builder.build();
  }
  return newClusterState;
}

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

private ClusterState buildResult(ClusterState oldState, RoutingAllocation allocation) {
  final RoutingTable oldRoutingTable = oldState.routingTable();
  final RoutingNodes newRoutingNodes = allocation.routingNodes();
  final RoutingTable newRoutingTable = new RoutingTable.Builder().updateNodes(oldRoutingTable.version(), newRoutingNodes).build();
  final MetaData newMetaData = allocation.updateMetaDataWithRoutingChanges(newRoutingTable);
  assert newRoutingTable.validate(newMetaData); // validates the routing table is coherent with the cluster state metadata
  final ClusterState.Builder newStateBuilder = ClusterState.builder(oldState)
    .routingTable(newRoutingTable)
    .metaData(newMetaData);
  final RestoreInProgress restoreInProgress = allocation.custom(RestoreInProgress.TYPE);
  if (restoreInProgress != null) {
    RestoreInProgress updatedRestoreInProgress = allocation.updateRestoreInfoWithRoutingChanges(restoreInProgress);
    if (updatedRestoreInProgress != restoreInProgress) {
      ImmutableOpenMap.Builder<String, ClusterState.Custom> customsBuilder = ImmutableOpenMap.builder(allocation.getCustoms());
      customsBuilder.put(RestoreInProgress.TYPE, updatedRestoreInProgress);
      newStateBuilder.customs(customsBuilder.build());
    }
  }
  return newStateBuilder.build();
}

相关文章