From 346a6623b65889f54499140df3cb0a8629ec8d5e Mon Sep 17 00:00:00 2001 From: wangchong Date: Sat, 9 Jan 2021 11:37:09 +0800 Subject: [PATCH 1/4] Support keepAliveCount/keepAliveIdle/keepAliveInterval configuration. --- .../graylog2/syslog4j/SyslogConstants.java | 6 +++ .../impl/net/tcp/TCPNetSyslogConfig.java | 52 +++++++++++++++++++ .../impl/net/tcp/TCPNetSyslogConfigIF.java | 18 +++++++ .../impl/net/tcp/TCPNetSyslogWriter.java | 13 +++++ 4 files changed, 89 insertions(+) diff --git a/src/main/java/org/graylog2/syslog4j/SyslogConstants.java b/src/main/java/org/graylog2/syslog4j/SyslogConstants.java index 3ded474..1ceaab2 100644 --- a/src/main/java/org/graylog2/syslog4j/SyslogConstants.java +++ b/src/main/java/org/graylog2/syslog4j/SyslogConstants.java @@ -69,6 +69,12 @@ public interface SyslogConstants extends Serializable { public static final boolean TCP_SO_LINGER_DEFAULT = true; public static final int TCP_SO_LINGER_SECONDS_DEFAULT = 1; public static final boolean TCP_KEEP_ALIVE_DEFAULT = true; + public static final boolean TCP_KEEP_ALIVE_COUNT_DEFAULT = true; + public static final int TCP_KEEP_ALIVE_COUNT_VALUE_DEFAULT = 8; + public static final boolean TCP_KEEP_ALIVE_INTERVAL_DEFAULT = true; + public static final int TCP_KEEP_ALIVE_INTERVAL_SECONDS_DEFAULT = 75; + public static final boolean TCP_KEEP_ALIVE_IDLE_DEFAULT = true; + public static final int TCP_KEEP_ALIVE_IDLE_SECONDS_DEFAULT = 1200; public static final boolean TCP_REUSE_ADDRESS_DEFAULT = true; public static final boolean TCP_SET_BUFFER_SIZE_DEFAULT = true; public static final int TCP_FRESH_CONNECTION_INTERVAL_DEFAULT = -1; diff --git a/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfig.java b/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfig.java index df881c9..3867342 100644 --- a/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfig.java +++ b/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfig.java @@ -39,6 +39,13 @@ public class TCPNetSyslogConfig extends AbstractNetSyslogConfig implements TCPNe protected boolean keepAlive = TCP_KEEP_ALIVE_DEFAULT; + protected boolean keepAliveCount = TCP_KEEP_ALIVE_COUNT_DEFAULT; + protected int keepAliveCountValue = TCP_KEEP_ALIVE_COUNT_VALUE_DEFAULT; + protected boolean keepAliveInterval = TCP_KEEP_ALIVE_INTERVAL_DEFAULT; + protected int keepAliveIntervalSeconds = TCP_KEEP_ALIVE_INTERVAL_SECONDS_DEFAULT; + protected boolean keepAliveIdle = TCP_KEEP_ALIVE_IDLE_DEFAULT; + protected int keepAliveIdleSeconds = TCP_KEEP_ALIVE_IDLE_SECONDS_DEFAULT; + protected boolean reuseAddress = TCP_REUSE_ADDRESS_DEFAULT; protected boolean setBufferSize = TCP_SET_BUFFER_SIZE_DEFAULT; @@ -137,6 +144,51 @@ public void setKeepAlive(boolean keepAlive) { this.keepAlive = keepAlive; } + @Override + public boolean isKeepAliveCount() { + return this.keepAliveCount; + } + + @Override + public void setKeepAliveCountValue(int countValue) { + this.keepAliveCountValue = countValue; + } + + @Override + public int getKeepAliveCountValue() { + return this.keepAliveCountValue; + } + + @Override + public boolean isKeepAliveInterval() { + return this.keepAliveInterval; + } + + @Override + public void setKeepAliveIntervalSeconds(int intervalSeconds) { + this.keepAliveIntervalSeconds = intervalSeconds; + } + + @Override + public int getKeepAliveIntervalSeconds() { + return this.keepAliveIntervalSeconds; + } + + @Override + public boolean isKeepAliveIdle() { + return this.keepAliveIdle; + } + + @Override + public void setKeepAliveIdleSeconds(int idleSeconds) { + this.keepAliveIdleSeconds = idleSeconds; + } + + @Override + public int getKeepAliveIdleSeconds() { + return this.keepAliveIdleSeconds; + } + public boolean isReuseAddress() { return this.reuseAddress; } diff --git a/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfigIF.java b/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfigIF.java index 5e760ab..43cb31d 100644 --- a/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfigIF.java +++ b/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogConfigIF.java @@ -34,6 +34,24 @@ public interface TCPNetSyslogConfigIF extends AbstractNetSyslogConfigIF { public void setKeepAlive(boolean keepAlive); + public boolean isKeepAliveCount(); + + public void setKeepAliveCountValue(int countValue); + + public int getKeepAliveCountValue(); + + public boolean isKeepAliveInterval(); + + public void setKeepAliveIntervalSeconds(int intervalSeconds); + + public int getKeepAliveIntervalSeconds(); + + public boolean isKeepAliveIdle(); + + public void setKeepAliveIdleSeconds(int idleSeconds); + + public int getKeepAliveIdleSeconds(); + public boolean isReuseAddress(); public void setReuseAddress(boolean reuseAddress); diff --git a/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogWriter.java b/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogWriter.java index 3e4a535..79d67e3 100644 --- a/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogWriter.java +++ b/src/main/java/org/graylog2/syslog4j/impl/net/tcp/TCPNetSyslogWriter.java @@ -7,6 +7,7 @@ import javax.net.SocketFactory; +import jdk.net.ExtendedSocketOptions; import org.graylog2.syslog4j.SyslogConstants; import org.graylog2.syslog4j.SyslogRuntimeException; import org.graylog2.syslog4j.impl.AbstractSyslog; @@ -67,6 +68,18 @@ protected Socket createSocket(InetAddress hostAddress, int port, boolean keepali newSocket.setKeepAlive(keepalive); } + if (this.tcpNetSyslogConfig.isKeepAliveCount()) { + newSocket.setOption(ExtendedSocketOptions.TCP_KEEPCOUNT, tcpNetSyslogConfig.getKeepAliveCountValue()); + } + + if (this.tcpNetSyslogConfig.isKeepAliveInterval()) { + newSocket.setOption(ExtendedSocketOptions.TCP_KEEPINTERVAL,tcpNetSyslogConfig.getKeepAliveIntervalSeconds() ); + } + + if (this.tcpNetSyslogConfig.isKeepAliveIdle()) { + newSocket.setOption(ExtendedSocketOptions.TCP_KEEPIDLE,tcpNetSyslogConfig.getKeepAliveIdleSeconds() ); + } + if (this.tcpNetSyslogConfig.isReuseAddress()) { newSocket.setReuseAddress(true); } From 354ea1fbc7e24192015d08435c48f2f8e92276aa Mon Sep 17 00:00:00 2001 From: wangchong Date: Sun, 10 Jan 2021 12:13:42 +0800 Subject: [PATCH 2/4] Support JDK 11. --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c6754b6..1f08877 100644 --- a/pom.xml +++ b/pom.xml @@ -45,8 +45,8 @@ UTF-8 - 1.8 - 1.8 + 11 + 11 From c11b638216a0d11b38bdf721c662292e68ba328b Mon Sep 17 00:00:00 2001 From: wangchong Date: Sun, 10 Jan 2021 13:37:37 +0800 Subject: [PATCH 3/4] travis ci for jdk11. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 2fe0f3b..df39a9b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ sudo: required dist: trusty language: java jdk: - - oraclejdk8 + - openjdk11 addons: # Fix OpenJDK builds # https://github.com/travis-ci/travis-ci/issues/5227 From 1928b2d2e74b589b4421e36184c937ba4671f5d9 Mon Sep 17 00:00:00 2001 From: wangchong Date: Sun, 31 Jan 2021 19:42:57 +0800 Subject: [PATCH 4/4] update mock version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1f08877..3739c33 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,7 @@ org.mockito mockito-core - 2.7.22 + 3.6.28 test