From 25bb5c8a6bb019b98b46b2a73529635d3f1bd013 Mon Sep 17 00:00:00 2001 From: "w.montaz" Date: Mon, 22 Jul 2024 16:45:54 +0200 Subject: [PATCH] Fix agent consul forwarder discovery Prefer usage of service host qhen available. With IP per container, it is not relevant to use the node host. --- .../hadoop/garmadon/agent/ConsulConnection.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/agent/src/main/java/com/criteo/hadoop/garmadon/agent/ConsulConnection.java b/agent/src/main/java/com/criteo/hadoop/garmadon/agent/ConsulConnection.java index c43cc3ec..6973bcd7 100644 --- a/agent/src/main/java/com/criteo/hadoop/garmadon/agent/ConsulConnection.java +++ b/agent/src/main/java/com/criteo/hadoop/garmadon/agent/ConsulConnection.java @@ -63,12 +63,20 @@ private List getHealthyEndPoints() { @Override public void establishConnection() { for (; ; ) { - List nodes = getHealthyEndPoints(); + List healthServices = getHealthyEndPoints(); - HealthService electedNode = nodes.get(ThreadLocalRandom.current().nextInt(nodes.size())); + HealthService randomHealthyService = healthServices.get(ThreadLocalRandom.current().nextInt(healthServices.size())); - String host = electedNode.getNode().getAddress(); - Integer port = electedNode.getService().getPort(); + String nodeHost = randomHealthyService.getNode().getAddress(); + String serviceHost = randomHealthyService.getService().getAddress(); + + String host; + if (serviceHost.isEmpty()) { + host = nodeHost; + } else { + host = serviceHost; + } + Integer port = randomHealthyService.getService().getPort(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("will use forwarder at " + host + ":" + port);