From f2061796b54f60eb70150bbaac8c04f3b312bcec Mon Sep 17 00:00:00 2001 From: Masahiro Nakagawa Date: Tue, 7 Nov 2017 18:34:23 +0900 Subject: [PATCH 1/4] in_syslog: Use TCPCallbackSocket's buffer instance --- lib/fluent/plugin/in_syslog.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fluent/plugin/in_syslog.rb b/lib/fluent/plugin/in_syslog.rb index 7fcf145cbf..85f071d34d 100644 --- a/lib/fluent/plugin/in_syslog.rb +++ b/lib/fluent/plugin/in_syslog.rb @@ -156,8 +156,8 @@ def start_tcp_server delimiter = "\n" delimiter_size = delimiter.size server_create_connection(:in_syslog_tcp_server, @port, bind: @bind, resolve_name: @resolve_hostname) do |conn| - buffer = "" conn.data do |data| + buffer = conn.buffer buffer << data pos = 0 while idx = buffer.index(delimiter, pos) From a29ea783cf050e06c97f1d428fbdf79eb1199fc4 Mon Sep 17 00:00:00 2001 From: Masahiro Nakagawa Date: Tue, 7 Nov 2017 18:35:12 +0900 Subject: [PATCH 2/4] Make enabled_events list constant to reduce object allocation --- lib/fluent/plugin_helper/server.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/fluent/plugin_helper/server.rb b/lib/fluent/plugin_helper/server.rb index eb57832475..e2c2875795 100644 --- a/lib/fluent/plugin_helper/server.rb +++ b/lib/fluent/plugin_helper/server.rb @@ -425,10 +425,12 @@ def on(event, &callback) end class TCPCallbackSocket < CallbackSocket + ENABLED_EVENTS = [:data, :write_complete, :close] + attr_accessor :buffer def initialize(sock) - super("tcp", sock, [:data, :write_complete, :close]) + super("tcp", sock, ENABLED_EVENTS) @peeraddr = @sock.peeraddr @buffer = '' end @@ -439,8 +441,10 @@ def write(data) end class TLSCallbackSocket < CallbackSocket + ENABLED_EVENTS = [:data, :write_complete, :close] + def initialize(sock) - super("tls", sock, [:data, :write_complete, :close]) + super("tls", sock, ENABLED_EVENTS) @peeraddr = @sock.to_io.peeraddr end @@ -450,8 +454,10 @@ def write(data) end class UDPCallbackSocket < CallbackSocket + ENABLED_EVENTS = [] + def initialize(sock, peeraddr, **kwargs) - super("udp", sock, [], **kwargs) + super("udp", sock, ENABLED_EVENTS, **kwargs) @peeraddr = peeraddr end From d244d9511985f3409b52af094299b03f10b0a563 Mon Sep 17 00:00:00 2001 From: Masahiro Nakagawa Date: Wed, 22 Nov 2017 16:15:38 +0900 Subject: [PATCH 3/4] Don't raise an error when peeraddr has a problem --- lib/fluent/plugin_helper/server.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/fluent/plugin_helper/server.rb b/lib/fluent/plugin_helper/server.rb index e2c2875795..cb8afe5193 100644 --- a/lib/fluent/plugin_helper/server.rb +++ b/lib/fluent/plugin_helper/server.rb @@ -370,6 +370,8 @@ def server_create_udp_socket(shared, bind, port) sock end + PEERADDR_FAILED = ["?", "?", "name resolusion failed", "?"] + class CallbackSocket def initialize(server_type, sock, enabled_events = [], close_socket: true) @server_type = server_type @@ -431,7 +433,7 @@ class TCPCallbackSocket < CallbackSocket def initialize(sock) super("tcp", sock, ENABLED_EVENTS) - @peeraddr = @sock.peeraddr + @peeraddr = (@sock.peeraddr rescue PEERADDR_FAILED) @buffer = '' end @@ -445,7 +447,7 @@ class TLSCallbackSocket < CallbackSocket def initialize(sock) super("tls", sock, ENABLED_EVENTS) - @peeraddr = @sock.to_io.peeraddr + @peeraddr = (@sock.to_io.peeraddr rescue PEERADDR_FAILED) end def write(data) From 065d094b65e265898a187ede727236fc4a049614 Mon Sep 17 00:00:00 2001 From: Masahiro Nakagawa Date: Wed, 22 Nov 2017 17:45:05 +0900 Subject: [PATCH 4/4] Add note to PEERADDR_FAILED port value --- lib/fluent/plugin_helper/server.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/fluent/plugin_helper/server.rb b/lib/fluent/plugin_helper/server.rb index cb8afe5193..7cd9c41148 100644 --- a/lib/fluent/plugin_helper/server.rb +++ b/lib/fluent/plugin_helper/server.rb @@ -370,6 +370,7 @@ def server_create_udp_socket(shared, bind, port) sock end + # Use string "?" for port, not integer or nil. "?" is clear than -1 or nil in the log. PEERADDR_FAILED = ["?", "?", "name resolusion failed", "?"] class CallbackSocket