Merge pull request #7298 from mononym/fix-mongodb-timeout-crash
fix: prevent crash when mongodb connection times out
This commit is contained in:
commit
eb5d9fa501
|
@ -1,6 +1,6 @@
|
||||||
{application, emqx_auth_mongo,
|
{application, emqx_auth_mongo,
|
||||||
[{description, "EMQ X Authentication/ACL with MongoDB"},
|
[{description, "EMQ X Authentication/ACL with MongoDB"},
|
||||||
{vsn, "4.3.1"}, % strict semver, bump manually!
|
{vsn, "4.3.2"}, % strict semver, bump manually!
|
||||||
{modules, []},
|
{modules, []},
|
||||||
{registered, [emqx_auth_mongo_sup]},
|
{registered, [emqx_auth_mongo_sup]},
|
||||||
{applications, [kernel,stdlib,mongodb,ecpool]},
|
{applications, [kernel,stdlib,mongodb,ecpool]},
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
%% -*- mode: erlang -*-
|
%% -*- mode: erlang -*-
|
||||||
{VSN,
|
{VSN,
|
||||||
[{"4.3.0",
|
[{"4.3.1",
|
||||||
|
[{load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.0",
|
||||||
[{load_module,emqx_auth_mongo_app,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_auth_mongo_app,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}],
|
{<<".*">>,[]}],
|
||||||
[{"4.3.0",
|
[{"4.3.1",
|
||||||
|
[{load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]}]},
|
||||||
|
{"4.3.0",
|
||||||
[{load_module,emqx_auth_mongo_app,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_auth_mongo_app,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_auth_mongo,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_acl_mongo,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}]
|
{<<".*">>,[]}]
|
||||||
}.
|
}.
|
||||||
|
|
|
@ -129,6 +129,9 @@ query_multi(Pool, Collection, SelectorList) ->
|
||||||
lists:reverse(lists:flatten(lists:foldl(fun(Selector, Acc1) ->
|
lists:reverse(lists:flatten(lists:foldl(fun(Selector, Acc1) ->
|
||||||
Batch = ecpool:with_client(Pool, fun(Conn) ->
|
Batch = ecpool:with_client(Pool, fun(Conn) ->
|
||||||
case mongo_api:find(Conn, Collection, Selector, #{}) of
|
case mongo_api:find(Conn, Collection, Selector, #{}) of
|
||||||
|
{error, Reason} ->
|
||||||
|
?LOG(error, "[MongoDB] query_multi failed, got error: ~p", [Reason]),
|
||||||
|
[];
|
||||||
[] -> [];
|
[] -> [];
|
||||||
{ok, Cursor} ->
|
{ok, Cursor} ->
|
||||||
mc_cursor:foldl(fun(O, Acc2) -> [O|Acc2] end, [], Cursor, 1000)
|
mc_cursor:foldl(fun(O, Acc2) -> [O|Acc2] end, [], Cursor, 1000)
|
||||||
|
|
Loading…
Reference in New Issue