diff --git a/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcess.java b/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcess.java index 2de42495af..af3f362839 100644 --- a/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcess.java +++ b/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcess.java @@ -36,5 +36,5 @@ public interface OpensearchProcess extends ManagableProcess stdErrLogs(); URI getOpensearchBaseUrl(); - URI getOpensearchClusterUrl(); + String getOpensearchClusterUrl(); } diff --git a/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcessImpl.java b/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcessImpl.java index 15c18652e6..9c2ac1692c 100644 --- a/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcessImpl.java +++ b/data-node/src/main/java/org/graylog/datanode/management/OpensearchProcessImpl.java @@ -123,17 +123,9 @@ class OpensearchProcessImpl implements OpensearchProcess, ProcessListener { } @Override - public URI getOpensearchClusterUrl() { - final String baseUrl = opensearchConfiguration.map(OpensearchConfiguration::getClusterBaseUrl) - .map(httpHost -> new URIBuilder() - .setHost(httpHost.getHostName()) - .setPort(httpHost.getPort()) - .setScheme(httpHost.getSchemeName()).toString()) - .orElseGet( () -> { - final var hostname = DatanodeConfigurationProvider.getNodesFromConfig(configuration.getDatanodeNodeName()); - return URI.create("http://" + hostname + ":" + configuration.getOpensearchTransportPort()).toString(); - }); - return URI.create(baseUrl); + public String getOpensearchClusterUrl() { + final var hostname = DatanodeConfigurationProvider.getNodesFromConfig(configuration.getDatanodeNodeName()); + return URI.create(hostname + ":" + configuration.getOpensearchTransportPort()).toString(); } public void onEvent(ProcessEvent event) { @@ -167,15 +159,7 @@ class OpensearchProcessImpl implements OpensearchProcess, ProcessListener { private void writeSeedHostsList() { try { - final Set current = nodeService.allActive(Node.Type.DATANODE).values().stream().map(node -> { - try { - return new URI(node.getClusterAddress()).getAuthority(); - } catch (URISyntaxException ex) { - LOG.warn("Could not get host:port from {}", node); - return null; - } - }).filter(Objects::nonNull).collect(Collectors.toSet()); - + final Set current = nodeService.allActive(Node.Type.DATANODE).values().stream().map(Node::getClusterAddress).filter(Objects::nonNull).collect(Collectors.toSet()); Files.write(hostsfile, current, Charset.defaultCharset(), StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE); } catch (IOException iox) { LOG.error("Could not write to file: {} - {}", hostsfile, iox.getMessage()); diff --git a/data-node/src/main/java/org/graylog/datanode/periodicals/NodePingPeriodical.java b/data-node/src/main/java/org/graylog/datanode/periodicals/NodePingPeriodical.java index 1908508f47..75c8ab543e 100644 --- a/data-node/src/main/java/org/graylog/datanode/periodicals/NodePingPeriodical.java +++ b/data-node/src/main/java/org/graylog/datanode/periodicals/NodePingPeriodical.java @@ -36,7 +36,7 @@ public class NodePingPeriodical extends Periodical { private final NodeService nodeService; private final NodeId nodeId; private final Supplier opensearchBaseUri; - private final Supplier opensearchClusterUri; + private final Supplier opensearchClusterUri; private final Supplier isLeader; @@ -49,7 +49,7 @@ public class NodePingPeriodical extends Periodical { NodeService nodeService, NodeId nodeId, Supplier opensearchBaseUri, - Supplier opensearchClusterUri, + Supplier opensearchClusterUri, Supplier isLeader ) { this.nodeService = nodeService; diff --git a/data-node/src/test/java/org/graylog/datanode/periodicals/NodePingPeriodicalTest.java b/data-node/src/test/java/org/graylog/datanode/periodicals/NodePingPeriodicalTest.java index f0f4b42d18..8303494742 100644 --- a/data-node/src/test/java/org/graylog/datanode/periodicals/NodePingPeriodicalTest.java +++ b/data-node/src/test/java/org/graylog/datanode/periodicals/NodePingPeriodicalTest.java @@ -31,7 +31,7 @@ class NodePingPeriodicalTest { final SimpleNodeId nodeID = new SimpleNodeId("5ca1ab1e-0000-4000-a000-000000000000"); final URI uri = URI.create("http://localhost:9200"); - final URI cluster = URI.create("http://localhost:9300"); + final String cluster = "localhost:9300"; final NodeService nodeService = Mockito.mock(NodeService.class); final NodePingPeriodical task = new NodePingPeriodical( @@ -57,7 +57,7 @@ class NodePingPeriodicalTest { final SimpleNodeId nodeID = new SimpleNodeId("5ca1ab1e-0000-4000-a000-000000000000"); final URI uri = URI.create("http://localhost:9200"); - final URI cluster = URI.create("http://localhost:9300"); + final String cluster = "localhost:9300"; final NodeService nodeService = Mockito.mock(NodeService.class); diff --git a/graylog2-server/src/main/java/org/graylog2/cluster/NodeService.java b/graylog2-server/src/main/java/org/graylog2/cluster/NodeService.java index 018b68fd91..e8d640f040 100644 --- a/graylog2-server/src/main/java/org/graylog2/cluster/NodeService.java +++ b/graylog2-server/src/main/java/org/graylog2/cluster/NodeService.java @@ -26,7 +26,7 @@ import java.util.Map; public interface NodeService { Node.Type type(); - boolean registerServer(String nodeId, boolean isLeader, URI httpPublishUri, URI clusterUri, String hostname); + boolean registerServer(String nodeId, boolean isLeader, URI httpPublishUri, String clusterUri, String hostname); default boolean registerServer(String nodeId, boolean isLeader, URI httpPublishUri, String hostname) { return registerServer(nodeId, isLeader, httpPublishUri, null, hostname); @@ -49,7 +49,7 @@ public interface NodeService { void dropOutdated(); - void markAsAlive(NodeId node, boolean isLeader, URI restTransportAddress, URI clusterAddress) throws NodeNotFoundException; + void markAsAlive(NodeId node, boolean isLeader, URI restTransportAddress, String clusterAddress) throws NodeNotFoundException; default void markAsAlive(NodeId node, boolean isLeader, URI restTransportAddress) throws NodeNotFoundException { markAsAlive(node, isLeader, restTransportAddress, null); } diff --git a/graylog2-server/src/main/java/org/graylog2/cluster/NodeServiceImpl.java b/graylog2-server/src/main/java/org/graylog2/cluster/NodeServiceImpl.java index 9cf973cea9..f779bc7d18 100644 --- a/graylog2-server/src/main/java/org/graylog2/cluster/NodeServiceImpl.java +++ b/graylog2-server/src/main/java/org/graylog2/cluster/NodeServiceImpl.java @@ -72,17 +72,17 @@ public class NodeServiceImpl extends PersistedServiceImpl implements NodeService return Node.Type.SERVER; } - private Map addClusterUriToMap(final Map orig, final URI clusterUri) { + private Map addClusterUriToMap(final Map orig, final String clusterUri) { if(clusterUri == null) { return orig; } var newMap = new HashMap<>(orig); - newMap.put("cluster_address", clusterUri.toString()); + newMap.put("cluster_address", clusterUri); return Map.copyOf(newMap); } @Override - public boolean registerServer(String nodeId, boolean isLeader, URI httpPublishUri, URI clusterUri, String hostname) { + public boolean registerServer(String nodeId, boolean isLeader, URI httpPublishUri, String clusterUri, String hostname) { final var params = addClusterUriToMap(Map.of( "node_id", nodeId, "type", type().toString(), @@ -181,7 +181,7 @@ public class NodeServiceImpl extends PersistedServiceImpl implements NodeService /** * Mark this node as alive and probably update some settings that may have changed since last server boot. */ - public void markAsAlive(NodeId node, boolean isLeader, URI restTransportAddress, URI clusterAddress) throws NodeNotFoundException { + public void markAsAlive(NodeId node, boolean isLeader, URI restTransportAddress, String clusterAddress) throws NodeNotFoundException { BasicDBObject query = new BasicDBObject("node_id", node.getNodeId()); final var params = addClusterUriToMap(Map.of( "is_leader", isLeader, diff --git a/graylog2-server/src/test/java/org/graylog2/cluster/TestNodeService.java b/graylog2-server/src/test/java/org/graylog2/cluster/TestNodeService.java index de53812e38..d2476f2369 100644 --- a/graylog2-server/src/test/java/org/graylog2/cluster/TestNodeService.java +++ b/graylog2-server/src/test/java/org/graylog2/cluster/TestNodeService.java @@ -48,8 +48,8 @@ public class TestNodeService implements NodeService { } @Override - public boolean registerServer(String nodeId, boolean isLeader, URI httpPublishUri, URI clusterUri, String hostname) { - return nodes.add(new NodeRecord(type, nodeId, isLeader, httpPublishUri.toString(), clusterUri != null ? clusterUri.toString() : null, hostname, DateTime.now(DateTimeZone.UTC))); + public boolean registerServer(String nodeId, boolean isLeader, URI httpPublishUri, String clusterUri, String hostname) { + return nodes.add(new NodeRecord(type, nodeId, isLeader, httpPublishUri.toString(), clusterUri, hostname, DateTime.now(DateTimeZone.UTC))); } @Override @@ -94,7 +94,7 @@ public class TestNodeService implements NodeService { } @Override - public void markAsAlive(NodeId node, boolean isLeader, URI restTransportAddress, URI clusterAddress) { + public void markAsAlive(NodeId node, boolean isLeader, URI restTransportAddress, String clusterAddress) { throw new UnsupportedOperationException("Unsupported operation"); }