From e95740b2f81ef85eebc2972edcefdccb1b4330e9 Mon Sep 17 00:00:00 2001 From: Yuta Iwama Date: Fri, 10 Apr 2020 15:08:24 +0900 Subject: [PATCH] creating timer of purging obsolete sockets if keepalive_timeout is nil If connection sockets raise some errors, the cached socket is revoked. Revoked cached socket(`@inactive_sockets`) must be deleted by purge_obsolete_socks method so that memory usage doesn't increase. https://github.com/fluent/fluentd/blob/0e901e7974232dd05f098ad74ea5be956aaba0e3/lib/fluent/plugin/out_forward/connection_manager.rb#L99 https://github.com/fluent/fluentd/blob/0e901e7974232dd05f098ad74ea5be956aaba0e3/lib/fluent/plugin/out_forward/socket_cache.rb#L63 Signed-off-by: Yuta Iwama --- lib/fluent/plugin/out_forward.rb | 2 +- test/plugin/test_out_forward.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/fluent/plugin/out_forward.rb b/lib/fluent/plugin/out_forward.rb index 5125c7eb50..5bfef4c345 100644 --- a/lib/fluent/plugin/out_forward.rb +++ b/lib/fluent/plugin/out_forward.rb @@ -324,7 +324,7 @@ def start end end - if @keepalive && @keepalive_timeout + if @keepalive timer_execute(:out_forward_keep_alived_socket_watcher, @keep_alive_watcher_interval, &method(:on_purge_obsolete_socks)) end end diff --git a/test/plugin/test_out_forward.rb b/test/plugin/test_out_forward.rb index e563d81c80..b5da73851d 100644 --- a/test/plugin/test_out_forward.rb +++ b/test/plugin/test_out_forward.rb @@ -1200,6 +1200,15 @@ def plugin_id_for_test? end end + test 'create timer of purging obsolete sockets' do + output_conf = CONFIG + %[keepalive true] + d = create_driver(output_conf) + + mock(d.instance).timer_execute(:out_forward_heartbeat_request, 1).once + mock(d.instance).timer_execute(:out_forward_keep_alived_socket_watcher, 5).once + d.instance_start + end + sub_test_case 'with require_ack_response' do test 'Create connection per send_data' do target_input_driver = create_target_input_driver(conf: TARGET_CONFIG)