use of org.elasticsearch.cluster.node.DiscoveryNode in project crate by crate.
the class Routing method forTableOnAllNodes.
public static Routing forTableOnAllNodes(TableIdent tableIdent, DiscoveryNodes nodes) {
TreeMapBuilder<String, Map<String, List<Integer>>> nodesMapBuilder = TreeMapBuilder.newMapBuilder();
Map<String, List<Integer>> tableMap = TreeMapBuilder.<String, List<Integer>>newMapBuilder().put(tableIdent.fqn(), Collections.<Integer>emptyList()).map();
for (DiscoveryNode node : nodes) {
nodesMapBuilder.put(node.getId(), tableMap);
}
return new Routing(nodesMapBuilder.map());
}
use of org.elasticsearch.cluster.node.DiscoveryNode in project crate by crate.
the class NodeStatsIterator method getNodeStatsContextFromRemoteState.
private CompletableFuture<List<NodeStatsContext>> getNodeStatsContextFromRemoteState(Set<ColumnIdent> toCollect) {
final CompletableFuture<List<NodeStatsContext>> nodeStatsContextsFuture = new CompletableFuture<>();
final List<NodeStatsContext> rows = Collections.synchronizedList(new ArrayList<NodeStatsContext>(nodes.size()));
final AtomicInteger remainingNodesToCollect = new AtomicInteger(nodes.size());
for (final DiscoveryNode node : nodes) {
final String nodeId = node.getId();
final NodeStatsRequest request = new NodeStatsRequest(toCollect);
transportStatTablesAction.execute(nodeId, request, new ActionListener<NodeStatsResponse>() {
@Override
public void onResponse(NodeStatsResponse response) {
rows.add(response.nodeStatsContext());
if (remainingNodesToCollect.decrementAndGet() == 0) {
nodeStatsContextsFuture.complete(rows);
}
}
@Override
public void onFailure(Throwable t) {
if (t instanceof ReceiveTimeoutTransportException) {
rows.add(new NodeStatsContext(nodeId, node.name()));
if (remainingNodesToCollect.decrementAndGet() == 0) {
nodeStatsContextsFuture.complete(rows);
}
} else {
nodeStatsContextsFuture.completeExceptionally(t);
}
}
}, TimeValue.timeValueMillis(3000L));
}
return nodeStatsContextsFuture;
}
use of org.elasticsearch.cluster.node.DiscoveryNode in project crate by crate.
the class NodeStatsCollectSource method nodeIds.
@Nullable
static Collection<DiscoveryNode> nodeIds(WhereClause whereClause, Collection<DiscoveryNode> nodes, Functions functions) {
if (!whereClause.hasQuery()) {
return nodes;
}
LocalSysColReferenceResolver localSysColReferenceResolver = new LocalSysColReferenceResolver(ImmutableList.of(SysNodesTableInfo.Columns.NAME, SysNodesTableInfo.Columns.ID));
EvaluatingNormalizer normalizer = new EvaluatingNormalizer(functions, RowGranularity.DOC, ReplaceMode.COPY, localSysColReferenceResolver, null);
List<DiscoveryNode> newNodes = new ArrayList<>();
for (DiscoveryNode node : nodes) {
String nodeId = node.getId();
for (RowCollectExpression<NodeStatsContext, ?> expression : localSysColReferenceResolver.expressions()) {
expression.setNextRow(new NodeStatsContext(nodeId, node.name()));
}
Symbol normalized = normalizer.normalize(whereClause.query(), null);
if (normalized.equals(whereClause.query())) {
// No local available sys nodes columns in where clause
return nodes;
}
if (WhereClause.canMatch(normalized)) {
newNodes.add(node);
}
}
return newNodes;
}
use of org.elasticsearch.cluster.node.DiscoveryNode in project crate by crate.
the class NodeStatsCollectSource method getCollector.
@Override
public CrateCollector getCollector(CollectPhase phase, BatchConsumer consumer, JobCollectContext jobCollectContext) {
RoutedCollectPhase collectPhase = (RoutedCollectPhase) phase;
if (collectPhase.whereClause().noMatch()) {
return RowsCollector.empty(consumer);
}
Collection<DiscoveryNode> nodes = nodeIds(collectPhase.whereClause(), Lists.newArrayList(clusterService.state().getNodes().iterator()), functions);
if (nodes.isEmpty()) {
return RowsCollector.empty(consumer);
}
BatchIterator nodeStatsIterator = NodeStatsIterator.newInstance(nodeStatsAction, collectPhase, nodes, inputFactory);
return BatchIteratorCollectorBridge.newInstance(nodeStatsIterator, consumer);
}
use of org.elasticsearch.cluster.node.DiscoveryNode in project crate by crate.
the class CopyStatementPlanner method getExecutionNodes.
private static Collection<String> getExecutionNodes(DiscoveryNodes allNodes, int maxNodes, final Predicate<DiscoveryNode> nodeFilters) {
final AtomicInteger counter = new AtomicInteger(maxNodes);
final List<String> nodes = new ArrayList<>(allNodes.size());
allNodes.dataNodes().values().forEach(new ObjectProcedure<DiscoveryNode>() {
@Override
public void apply(DiscoveryNode value) {
if (nodeFilters.apply(value) && counter.getAndDecrement() > 0) {
nodes.add(value.getId());
}
}
});
return nodes;
}
Aggregations