@@ -401,7 +401,7 @@ ensure_leader_connections2(#{metadata_conn := Pid,
401401 conn_config := ConnConfig ,
402402 config := Config
403403 } = St , Group , Topic , MaxPartitions ) when is_pid (Pid ) ->
404- Timeout = maps : get ( request_timeout , ConnConfig , ? DEFAULT_METADATA_TIMEOUT ),
404+ Timeout = metadata_request_timeout ( ConnConfig ),
405405 IsAutoCreateAllowed = maps :get (allow_auto_topic_creation , Config , false ),
406406 case do_get_metadata (Pid , Topic , Timeout , IsAutoCreateAllowed ) of
407407 {ok , {Brokers , PartitionMetaList }} ->
@@ -596,7 +596,7 @@ get_metadata([], _ConnConfig, _Topic, _IsAutoCreateAllowed, Errors) ->
596596get_metadata ([Host | Rest ], ConnConfig , Topic , IsAutoCreateAllowed , Errors ) ->
597597 case do_connect (Host , ConnConfig ) of
598598 {ok , Pid } ->
599- Timeout = maps : get ( request_timeout , ConnConfig , ? DEFAULT_METADATA_TIMEOUT ),
599+ Timeout = metadata_request_timeout ( ConnConfig ),
600600 case do_get_metadata (Pid , Topic , Timeout , IsAutoCreateAllowed ) of
601601 {ok , Result } ->
602602 {ok , {Pid , Result }};
@@ -770,3 +770,10 @@ bin(X) ->
770770 {error , _ } -> bin (io_lib :format (" ~0p " , [X ]));
771771 Addr -> bin (Addr )
772772 end .
773+
774+ metadata_request_timeout (#{request_timeout := infinity }) ->
775+ ? DEFAULT_METADATA_TIMEOUT * 3 ;
776+ metadata_request_timeout (#{request_timeout := Timeout }) ->
777+ Timeout ;
778+ metadata_request_timeout (_ ) ->
779+ ? DEFAULT_METADATA_TIMEOUT .
0 commit comments