diff --git a/lib/fluent/test.rb b/lib/fluent/test.rb index ed2c3a265f..2cbcca03b9 100644 --- a/lib/fluent/test.rb +++ b/lib/fluent/test.rb @@ -40,9 +40,12 @@ def self.setup $log = dummy_logger - Fluent.__send__(:remove_const, :Engine) - engine = Fluent.const_set(:Engine, EngineClass.new).init(SystemConfig.new) + old_engine = Fluent.__send__(:remove_const, :Engine) + # Ensure that GC can remove the objects of the old engine. + # Some objects can still exist after `remove_const`. See https://github.com/fluent/fluentd/issues/5054. + old_engine.instance_variable_set(:@root_agent, nil) + engine = Fluent.const_set(:Engine, EngineClass.new).init(SystemConfig.new) engine.define_singleton_method(:now=) {|n| @now = n } diff --git a/test/plugin/test_input.rb b/test/plugin/test_input.rb index 98e5b5e2e5..d6e68599d9 100644 --- a/test/plugin/test_input.rb +++ b/test/plugin/test_input.rb @@ -133,7 +133,5 @@ def emit(tag, es) assert{ @p.router.object_id != original_router.object_id } @p.router.emit('mytag.testing', ['for mock']) - ensure - Fluent::Engine.root_agent.labels['@mytest'] = nil end end diff --git a/test/plugin_helper/test_event_emitter.rb b/test/plugin_helper/test_event_emitter.rb index 4e7543210a..409b9800bf 100644 --- a/test/plugin_helper/test_event_emitter.rb +++ b/test/plugin_helper/test_event_emitter.rb @@ -70,8 +70,6 @@ class Dummy < Fluent::Plugin::TestBase d.configure(config_element('ROOT', '', {'@label' => '@mytest'})) router = d.event_emitter_router("@mytest") assert_equal router_mock, router - ensure - Fluent::Engine.root_agent.labels['@mytest'] = nil end test 'get root router' do