From 42163b3eb2c3737a6cdc345543031799adf3bc7f Mon Sep 17 00:00:00 2001 From: Takuro Ashie Date: Wed, 3 Aug 2022 12:20:06 +0900 Subject: [PATCH 1/4] http_server: Support Async 2.0 gem Signed-off-by: Takuro Ashie --- fluentd.gemspec | 1 - lib/fluent/plugin_helper/http_server/server.rb | 14 ++++++++------ test/plugin_helper/test_http_server_helper.rb | 4 ++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/fluentd.gemspec b/fluentd.gemspec index fd460fb240..51065c5c5c 100644 --- a/fluentd.gemspec +++ b/fluentd.gemspec @@ -54,6 +54,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency("test-unit", ["~> 3.3"]) gem.add_development_dependency("test-unit-rr", ["~> 1.0"]) gem.add_development_dependency("oj", [">= 2.14", "< 4"]) - gem.add_development_dependency("async", "~> 1.23") gem.add_development_dependency("async-http", ">= 0.50.0") end diff --git a/lib/fluent/plugin_helper/http_server/server.rb b/lib/fluent/plugin_helper/http_server/server.rb index 549db76cc8..3d54aa3ba4 100644 --- a/lib/fluent/plugin_helper/http_server/server.rb +++ b/lib/fluent/plugin_helper/http_server/server.rb @@ -39,7 +39,8 @@ def initialize(addr:, port:, logger:, default_app: nil, tls_context: nil) scheme = tls_context ? 'https' : 'http' @uri = URI("#{scheme}://#{@addr}:#{@port}").to_s @router = Router.new(default_app) - @reactor = Async::Reactor.new(nil, logger: Fluent::Log::ConsoleAdapter.wrap(@logger)) + @server_task = nil + Console.logger = Fluent::Log::ConsoleAdapter.wrap(@logger) opts = if tls_context { ssl_context: tls_context } @@ -55,23 +56,24 @@ def initialize(addr:, port:, logger:, default_app: nil, tls_context: nil) def start(notify = nil) @logger.debug("Start async HTTP server listening #{@uri}") - task = @reactor.run do - @server.run + Async do |task| + @server_task = task.async do + @server.run + end if notify notify.push(:ready) end end - task.stop @logger.debug('Finished HTTP server') end def stop @logger.debug('closing HTTP server') - if @reactor - @reactor.stop + if @server_task + @server_task.stop end end diff --git a/test/plugin_helper/test_http_server_helper.rb b/test/plugin_helper/test_http_server_helper.rb index 4fd044bb0e..3b978b847a 100644 --- a/test/plugin_helper/test_http_server_helper.rb +++ b/test/plugin_helper/test_http_server_helper.rb @@ -127,12 +127,12 @@ def start_https_request(addr, port, verify: true, cert_path: nil, selfsigned: tr end client = Async::HTTP::Client.new(Async::HTTP::Endpoint.parse("https://#{addr}:#{port}", ssl_context: context)) - reactor = Async::Reactor.new(nil, logger: Fluent::Log::ConsoleAdapter.wrap(NULL_LOGGER)) + Console.logger = Fluent::Log::ConsoleAdapter.wrap(NULL_LOGGER) resp = nil error = nil - reactor.run do + Async do |task| begin response = yield(client) rescue => e # Async::Reactor rescue all error. handle it by myself From 388a8cf9ec9071452a3436228ec78b17e722decc Mon Sep 17 00:00:00 2001 From: Takuro Ashie Date: Tue, 9 Aug 2022 10:18:28 +0900 Subject: [PATCH 2/4] Still stay on async-1.x Because dependent io-event (v1.0.9) can't build on Windows. Signed-off-by: Takuro Ashie --- fluentd.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/fluentd.gemspec b/fluentd.gemspec index 51065c5c5c..fd460fb240 100644 --- a/fluentd.gemspec +++ b/fluentd.gemspec @@ -54,5 +54,6 @@ Gem::Specification.new do |gem| gem.add_development_dependency("test-unit", ["~> 3.3"]) gem.add_development_dependency("test-unit-rr", ["~> 1.0"]) gem.add_development_dependency("oj", [">= 2.14", "< 4"]) + gem.add_development_dependency("async", "~> 1.23") gem.add_development_dependency("async-http", ">= 0.50.0") end From e285c76d02e0f191b6cee14d844af108eb9d632e Mon Sep 17 00:00:00 2001 From: Takuro Ashie Date: Wed, 15 Feb 2023 08:54:36 +0900 Subject: [PATCH 3/4] test_http_server_helper: Remove a needless argument Signed-off-by: Takuro Ashie --- test/plugin_helper/test_http_server_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/plugin_helper/test_http_server_helper.rb b/test/plugin_helper/test_http_server_helper.rb index 3b978b847a..f2d2d1c9aa 100644 --- a/test/plugin_helper/test_http_server_helper.rb +++ b/test/plugin_helper/test_http_server_helper.rb @@ -132,7 +132,7 @@ def start_https_request(addr, port, verify: true, cert_path: nil, selfsigned: tr resp = nil error = nil - Async do |task| + Async do begin response = yield(client) rescue => e # Async::Reactor rescue all error. handle it by myself From e9886fc1828223ca107445189bdf5c5675f5f623 Mon Sep 17 00:00:00 2001 From: Takuro Ashie Date: Wed, 15 Feb 2023 09:26:54 +0900 Subject: [PATCH 4/4] http_server: Replace Console.logger of all related threads Signed-off-by: Takuro Ashie --- lib/fluent/plugin_helper/http_server/server.rb | 3 +++ test/plugin_helper/test_http_server_helper.rb | 1 + 2 files changed, 4 insertions(+) diff --git a/lib/fluent/plugin_helper/http_server/server.rb b/lib/fluent/plugin_helper/http_server/server.rb index 3d54aa3ba4..1434df2f5f 100644 --- a/lib/fluent/plugin_helper/http_server/server.rb +++ b/lib/fluent/plugin_helper/http_server/server.rb @@ -55,10 +55,13 @@ def initialize(addr:, port:, logger:, default_app: nil, tls_context: nil) end def start(notify = nil) + Console.logger = Fluent::Log::ConsoleAdapter.wrap(@logger) @logger.debug("Start async HTTP server listening #{@uri}") Async do |task| + Console.logger = Fluent::Log::ConsoleAdapter.wrap(@logger) @server_task = task.async do + Console.logger = Fluent::Log::ConsoleAdapter.wrap(@logger) @server.run end if notify diff --git a/test/plugin_helper/test_http_server_helper.rb b/test/plugin_helper/test_http_server_helper.rb index f2d2d1c9aa..c198a364f1 100644 --- a/test/plugin_helper/test_http_server_helper.rb +++ b/test/plugin_helper/test_http_server_helper.rb @@ -133,6 +133,7 @@ def start_https_request(addr, port, verify: true, cert_path: nil, selfsigned: tr error = nil Async do + Console.logger = Fluent::Log::ConsoleAdapter.wrap(NULL_LOGGER) begin response = yield(client) rescue => e # Async::Reactor rescue all error. handle it by myself