/** * The address that the node can be communicated with. */ public TransportAddress getAddress() { return address(); }
public List<TransportAddress> transportAddresses() { List<TransportAddress> lstBuilder = new ArrayList<>(); for (DiscoveryNode listedNode : listedNodes) { lstBuilder.add(listedNode.address()); } return Collections.unmodifiableList(lstBuilder); }
public ConnectTransportException(DiscoveryNode node, String msg, String action, Throwable cause) { super(node == null ? null : node.name(), node == null ? null : node.address(), action, msg, cause); this.node = node; }
/** * Get a node by its address * * @param address {@link TransportAddress} of the wanted node * @return node identified by the given address or <code>null</code> if no such node exists */ public DiscoveryNode findByAddress(TransportAddress address) { for (ObjectCursor<DiscoveryNode> cursor : nodes.values()) { DiscoveryNode node = cursor.value; if (node.address().equals(address)) { return node; } } return null; }
public SendRequestTransportException(DiscoveryNode node, String action, Throwable cause) { super(node == null ? null : node.name(), node == null ? null : node.address(), action, cause); }
public ReceiveTimeoutTransportException(DiscoveryNode node, String action, String msg) { super(node.name(), node.address(), action, msg, null); }
public List<String> connectedNodes() { ImmutableList<DiscoveryNode> discoveryNodes = client().connectedNodes(); List<String> nodes = new ArrayList<String>(); for (DiscoveryNode discoveryNode : discoveryNodes) { TransportAddress address = discoveryNode.address(); if (address != null) { nodes.add(address.toString()); } } return nodes; }
@Override public void connectToNode(DiscoveryNode node) throws ConnectTransportException { synchronized (this) { if (connectedNodes.containsKey(node)) { return; } final LocalTransport targetTransport = transports.get(node.address()); if (targetTransport == null) { throw new ConnectTransportException(node, "Failed to connect"); } connectedNodes.put(node, targetTransport); transportServiceAdapter.raiseNodeConnected(node); } }
private void loggingConnectedNode(List<DiscoveryNode> list) { DiscoveryNode node = list.get(0); this.fireEvent(Event.connected, node.address().toString()); }
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startObject(id(), XContentBuilder.FieldCaseConversion.NONE); builder.field("name", name()); builder.field("transport_address", address().toString()); builder.startObject("attributes"); for (Map.Entry<String, String> attr : attributes().entrySet()) { builder.field(attr.getKey(), attr.getValue()); } builder.endObject(); builder.endObject(); return builder; } }
@Override public void serialize(ESNode value, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider) throws IOException, com.fasterxml.jackson.core.JsonProcessingException { jgen.writeStartObject(); jgen.writeStringField("id", value.getId()); jgen.writeStringField("agent", System.getProperty("runtime.id")); if (value.isMaster()) { jgen.writeArrayFieldStart("services"); jgen.writeString("elasticsearch"); jgen.writeEndArray(); } jgen.writeStringField("nodeName", value.getNode().name()); jgen.writeStringField("nodeId", value.getNode().id()); jgen.writeStringField("address", value.getNode().address().toString()); jgen.writeStringField("version", value.getNode().version().toString()); jgen.writeFieldName("attributes"); jgen.writeStartObject(); for (Map.Entry<String, String> entry : value.getNode().attributes().entrySet()) { jgen.writeStringField(entry.getKey(), entry.getValue()); } jgen.writeEndObject(); jgen.writeStringField("binary", Base64.encodeObject(value.getNode())); jgen.writeEndObject(); } }
@Override public void serialize(ESNode value, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeStartObject(); jgen.writeStringField("id", value.getId()); jgen.writeStringField("agent", System.getProperty("runtime.id")); if (value.isMaster()) { jgen.writeArrayFieldStart("services"); jgen.writeString("elasticsearch"); jgen.writeEndArray(); } jgen.writeStringField("nodeName", value.getNode().name()); jgen.writeStringField("nodeId", value.getNode().id()); jgen.writeStringField("address", value.getNode().address().toString()); jgen.writeStringField("version", value.getNode().version().toString()); jgen.writeFieldName("attributes"); jgen.writeStartObject(); for (Map.Entry<String, String> entry : value.getNode().attributes().entrySet()) { jgen.writeStringField(entry.getKey(), entry.getValue()); } jgen.writeEndObject(); jgen.writeStringField("binary", Base64.encodeObject(value.getNode())); jgen.writeEndObject(); } }
@Override public void serialize(ESNode value, com.fasterxml.jackson.core.JsonGenerator jgen, SerializerProvider provider) throws IOException { jgen.writeStartObject(); jgen.writeStringField("id", value.getId()); jgen.writeStringField("agent", System.getProperty("runtime.id")); if (value.isMaster()) { jgen.writeArrayFieldStart("services"); jgen.writeString("elasticsearch"); jgen.writeEndArray(); } jgen.writeStringField("nodeName", value.getNode().name()); jgen.writeStringField("nodeId", value.getNode().id()); jgen.writeStringField("address", value.getNode().address().toString()); jgen.writeStringField("version", value.getNode().version().toString()); jgen.writeFieldName("attributes"); jgen.writeStartObject(); for (Map.Entry<String, String> entry : value.getNode().attributes().entrySet()) { jgen.writeStringField(entry.getKey(), entry.getValue()); } jgen.writeEndObject(); jgen.writeStringField("binary", Base64.encodeObject(value.getNode())); jgen.writeEndObject(); } }
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.field("cluster_name", clusterName().value()); builder.startObject("nodes"); for (CacheStatsPerFieldStats nodeFieldStats : this) { builder.startObject(nodeFieldStats.node().id(), XContentBuilder.FieldCaseConversion.NONE); builder.field("timestamp", nodeFieldStats.timestamp()); builder.field("name", nodeFieldStats.node().name(), XContentBuilder.FieldCaseConversion.NONE); builder.field("transport_address", nodeFieldStats.node().address().toString()); if (nodeFieldStats.hostname() != null) { builder.field("hostname", nodeFieldStats.hostname(), XContentBuilder.FieldCaseConversion.NONE); } builder.startObject("fields"); for (CacheStatsPerFieldStats.FieldEntry fe : nodeFieldStats.fieldEntries()){ builder.startObject(fe.fieldName); builder.field("size",fe.size); builder.endObject(); } builder.endObject(); // fields builder.endObject(); // node } builder.endObject(); return builder; } }
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.field("cluster_name", getClusterName().value(), XContentBuilder.FieldCaseConversion.NONE); builder.startObject("nodes"); for (WebsocketInfo nodeInfo : this) { builder.startObject(nodeInfo.getNode().id(), XContentBuilder.FieldCaseConversion.NONE); builder.field("name", nodeInfo.getNode().name(), XContentBuilder.FieldCaseConversion.NONE); builder.field("transport_address", nodeInfo.getNode().address().toString()); builder.field("host", nodeInfo.getNode().getHostName(), XContentBuilder.FieldCaseConversion.NONE); builder.field("ip", nodeInfo.getNode().getHostAddress(), XContentBuilder.FieldCaseConversion.NONE); builder.field("websocket_address", nodeInfo.getAddress(), XContentBuilder.FieldCaseConversion.NONE); builder.endObject(); } builder.endObject(); return builder; }
void handleJoinRequest(final DiscoveryNode node, final ClusterState state, final MembershipAction.JoinCallback callback) { if (!transportService.addressSupported(node.address().getClass())) { // TODO, what should we do now? Maybe inform that node that its crap? logger.warn("received a wrong address type from [{}], ignoring...", node); } else if (nodeJoinController == null) { throw new IllegalStateException("discovery module is not yet started"); } else { // The minimum supported version for a node joining a master: Version minimumNodeJoinVersion = localNode().getVersion().minimumCompatibilityVersion(); // Sanity check: maybe we don't end up here, because serialization may have failed. if (node.getVersion().before(minimumNodeJoinVersion)) { callback.onFailure( new IllegalStateException("Can't handle join request from a node with a version [" + node.getVersion() + "] that is lower than the minimum compatible version [" + minimumNodeJoinVersion.minimumCompatibilityVersion() + "]") ); return; } // try and connect to the node, if it fails, we can raise an exception back to the client... transportService.connectToNode(node); // validate the join request, will throw a failure if it fails, which will get back to the // node calling the join request try { membership.sendValidateJoinRequestBlocking(node, state, joinTimeout); } catch (Throwable e) { logger.warn("failed to validate incoming join request from node [{}]", node); callback.onFailure(new IllegalStateException("failure when sending a validation request to node", e)); return; } nodeJoinController.handleJoinRequest(node, callback); } }
private NodeChannels connectToChannelsLight(DiscoveryNode node) { InetSocketAddress address = ((InetSocketTransportAddress) node.address()).address(); ChannelFuture connect = clientBootstrap.connect(address); connect.awaitUninterruptibly((long) (connectTimeout.millis() * 1.5)); if (!connect.isSuccess()) { throw new ConnectTransportException(node, "connect_timeout[" + connectTimeout + "]", connect.getCause()); } Channel[] channels = new Channel[1]; channels[0] = connect.getChannel(); channels[0].getCloseFuture().addListener(new ChannelCloseListener(node)); return new NodeChannels(channels, channels, channels, channels, channels); }
protected NodeChannels connectToChannelsLight(DiscoveryNode node) { InetSocketAddress address = ((InetSocketTransportAddress) node.address()).address(); ChannelFuture connect = clientBootstrap.connect(address); connect.awaitUninterruptibly((long) (connectTimeout.millis() * 1.5)); if (!connect.isSuccess()) { throw new ConnectTransportException(node, "connect_timeout[" + connectTimeout + "]", connect.getCause()); } Channel[] channels = new Channel[1]; channels[0] = connect.getChannel(); channels[0].getCloseFuture().addListener(new ChannelCloseListener(node)); return new NodeChannels(channels, channels, channels, channels, channels); }
@Override public void serialize(ESNode value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeStringField("id", value.id()); jgen.writeStringField("nodeName", value.node().name()); jgen.writeStringField("nodeId", value.node().id()); jgen.writeStringField("address", value.node().address().toString()); jgen.writeStringField("version", value.node().version().toString()); jgen.writeFieldName("attributes"); jgen.writeStartObject(); for (Map.Entry<String, String> entry : value.node().attributes().entrySet()) { jgen.writeStringField(entry.getKey(), entry.getValue()); } jgen.writeEndObject(); jgen.writeStringField("binary", Base64.encodeObject(value.node())); jgen.writeEndObject(); } }
private Table buildTable(RestRequest req, ClusterStateResponse state, NodesInfoResponse nodesInfo, NodesStatsResponse nodesStats) { boolean fullId = req.paramAsBoolean("full_id", false); DiscoveryNodes nodes = state.getState().nodes(); Table table = getTableWithHeader(req); for (DiscoveryNode node : nodes) { NodeInfo info = nodesInfo.getNodesMap().get(node.id()); ImmutableMap<String, String> attrs = node.getAttributes(); for(String att : attrs.keySet()) { table.startRow(); table.addCell(node.name()); table.addCell(fullId ? node.id() : Strings.substring(node.getId(), 0, 4)); table.addCell(info == null ? null : info.getProcess().getId()); table.addCell(node.getHostName()); table.addCell(node.getHostAddress()); if (node.address() instanceof InetSocketTransportAddress) { table.addCell(((InetSocketTransportAddress) node.address()).address().getPort()); } else { table.addCell("-"); } table.addCell(att); table.addCell(attrs.containsKey(att) ? attrs.get(att) : null); table.endRow(); } } return table; } }