diff --git a/src/main/java/info/fetter/logstashforwarder/Forwarder.java b/src/main/java/info/fetter/logstashforwarder/Forwarder.java index 1b15356..809b83b 100644 --- a/src/main/java/info/fetter/logstashforwarder/Forwarder.java +++ b/src/main/java/info/fetter/logstashforwarder/Forwarder.java @@ -100,10 +100,20 @@ public class Forwarder { private static void connectToServer() { int randomServerIndex = 0; List serverList = configManager.getConfig().getNetwork().getServers(); + if(adapter != null) { + try { + adapter.close(); + } catch(AdapterException e) { + logger.error("Error while closing connection to " + adapter.getServer() + ":" + adapter.getPort()); + } finally { + adapter = null; + } + } while(adapter == null) { try { randomServerIndex = random.nextInt(serverList.size()); String[] serverAndPort = serverList.get(randomServerIndex).split(":"); + logger.info("Trying to connect to " + serverList.get(randomServerIndex)); adapter = new LumberjackClient(configManager.getConfig().getNetwork().getSslCA(),serverAndPort[0],Integer.parseInt(serverAndPort[1])); reader.setAdapter(adapter); } catch(Exception ex) { diff --git a/src/main/java/info/fetter/logstashforwarder/ProtocolAdapter.java b/src/main/java/info/fetter/logstashforwarder/ProtocolAdapter.java index 5eeb288..ee375d6 100644 --- a/src/main/java/info/fetter/logstashforwarder/ProtocolAdapter.java +++ b/src/main/java/info/fetter/logstashforwarder/ProtocolAdapter.java @@ -24,4 +24,6 @@ import java.util.List; public interface ProtocolAdapter { public int sendEvents(List eventList) throws AdapterException; public void close() throws AdapterException; + public String getServer(); + public int getPort(); } diff --git a/src/main/java/info/fetter/logstashforwarder/protocol/LumberjackClient.java b/src/main/java/info/fetter/logstashforwarder/protocol/LumberjackClient.java index 48ff5b0..0511363 100644 --- a/src/main/java/info/fetter/logstashforwarder/protocol/LumberjackClient.java +++ b/src/main/java/info/fetter/logstashforwarder/protocol/LumberjackClient.java @@ -204,4 +204,13 @@ public class LumberjackClient implements ProtocolAdapter { } logger.info("Connection to " + server + ":" + port + " closed"); } + + public String getServer() { + return server; + } + + public int getPort() { + return port; + } + } diff --git a/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java b/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java index 8373fb9..12185f0 100644 --- a/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java +++ b/src/test/java/info/fetter/logstashforwarder/MockProtocolAdapter.java @@ -38,4 +38,14 @@ public class MockProtocolAdapter implements ProtocolAdapter { // not implemented } + public String getServer() { + // TODO Auto-generated method stub + return ""; + } + + public int getPort() { + // TODO Auto-generated method stub + return 0; + } + }