Просмотр исходного кода
fix(kafka consumer): ensure supervisor is started
Fixes https://emqx.atlassian.net/browse/EMQX-13619
When (re)starting a node with an existing and enabled Kafka Consumer source, crash logs
could be seen.
```
17:11:31.861 [warning] [reason: %{reason: {:noproc, {:gen_server, :call, [:emqx_bridge_sup, {:start_child, %{id: :emqx_bridge_kafka_consumer_sup, restart: :permanent, shutdown: :infinity, start: {:emqx_bridge_kafka_consumer_sup, :start_link, []}, type: :supervisor, modules: [:emqx_bridge_kafka_consumer_sup]}}, :infinity]}}, stacktrace: [{:gen_server, :call, 3, [file: ~c"gen_server.erl", line: 419]}, {:emqx_bridge_kafka_impl_consumer, :ensure_consumer_supervisor_started, 0, [file: ~c"src/emqx_bridge_kafka_impl_consumer.erl", line: 395]}, {:emqx_bridge_kafka_impl_consumer, :start_consumer, 5, [file: ~c"src/emqx_bridge_kafka_impl_consumer.erl", line: 427]}, {:emqx_bridge_kafka_impl_consumer, :on_add_channel, 4, [file: ~c"src/emqx_bridge_kafka_impl_consumer.erl", line: 254]}, {:emqx_resource, :call_add_channel, 5, [file: ~c"src/emqx_resource.erl", line: 565]}, {:emqx_resource_manager, :add_channels_in_list, 2, [file: ~c"src/emqx_resource_manager.erl", line: 872]}, {:emqx_resource_manager, :channels_health_check, 2, [file: ~c"src/emqx_resource_manager.erl", line: 1304]}, {:emqx_resource_manager, :continue_resource_health_check_not_connected, 2, [file: ~c"src/emqx_resource_manager.erl", line: 1235]}, {:gen_statem, :loop_state_callback, 11, [file: ~c"gen_statem.erl", line: 1397]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 241]}], exception: :exit}, msg: ~c"add_channel_failed", resource_id: "connector:kafka_consumer:a", channel_id: "source:kafka_consumer:b:connector:kafka_consumer:a"]
2024-12-03T17:11:31.861584+00:00 [warning] tag: CONNECTOR/KAFKA_CONSUMER, msg: add_channel_failed, reason: #{reason => {noproc,{gen_server,call,[emqx_bridge_sup,{start_child,#{id => emqx_bridge_kafka_consumer_sup,restart => permanent,shutdown => infinity,start => {emqx_bridge_kafka_consumer_sup,start_link,[]},type => supervisor,modules => [emqx_bridge_kafka_consumer_sup]}},infinity]}},stacktrace => [{gen_server,call,3,[{file,"gen_server.erl"},{line,419}]},{emqx_bridge_kafka_impl_consumer,ensure_consumer_supervisor_started,0,[{file,"src/emqx_bridge_kafka_impl_consumer.erl"},{line,395}]},{emqx_bridge_kafka_impl_consumer,start_consumer,5,[{file,"src/emqx_bridge_kafka_impl_consumer.erl"},{line,427}]},{emqx_bridge_kafka_impl_consumer,on_add_channel,4,[{file,"src/emqx_bridge_kafka_impl_consumer.erl"},{line,254}]},{emqx_resource,call_add_channel,5,[{file,"src/emqx_resource.erl"},{line,565}]},{emqx_resource_manager,add_channels_in_list,2,[{file,"src/emqx_resource_manager.erl"},{line,872}]},{emqx_resource_manager,channels_health_check,2,[{file,"src/emqx_resource_manager.erl"},{line,1304}]},{emqx_resource_manager,continue_resource_health_check_not_connected,2,[{file,"src/emqx_resource_manager.erl"},{line,1235}]},{gen_statem,loop_state_callback,11,[{file,"gen_statem.erl"},{line,1397}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,241}]}],exception => exit}, resource_id: <<"connector:kafka_consumer:a">>, channel_id: <<"source:kafka_consumer:b:connector:kafka_consumer:a">>
```