소스 검색

fix: mongodb authz crash

This fixes a crash with an error in the log file (see below) that
happened when the MongoDB authorization module queried the database. The
reason is that the collection name that was sent to the mongodb
connection was an atom. This is fixed by making sure it is not an atom.

2023-03-08T17:16:34.215523+01:00 [error] msg: query_mongo_error, mfa:
emqx_authz_mongodb:authorize/4, line: 95, peername: 127.0.0.1:53212,
clientid: client123, collection: mqtt_acl, filter: #{username =>
<<"emqx_u">>}, reason: {resource_error,#{msg => #{error =>
{error,{error_cannot_parse_response,{op_msg_response,#{<<"code">> =>
73,<<"codeName">> => <<"InvalidNamespace">>,<<"errmsg">> => <<"Failed to
parse namespace element">>,<<"ok">> => 0.0}}}},id =>
<<"emqx_authz_mongodb:3">>,name => call_query,request =>
{find,mqtt_acl,#{username => <<"emqx_u">>},#{}},stacktrace =>
[{mc_connection_man,reply,1,[{file,"mc_connection_man.erl"},{line,123}],
...]}, reason => exception}}, resource_id: <<"emqx_authz_mongodb:3">>

Fixes: https://github.com/emqx/emqx/issues/9783
Kjell Winblad 3 년 전
부모
커밋
aa57ea9ee1
3개의 변경된 파일3개의 추가작업 그리고 1개의 파일을 삭제
  1. 1 1
      apps/emqx_authz/src/emqx_authz_schema.erl
  2. 1 0
      changes/ce/fix-10098.en.md
  3. 1 0
      changes/ce/fix-10098.zh.md

+ 1 - 1
apps/emqx_authz/src/emqx_authz_schema.erl

@@ -240,7 +240,7 @@ http_common_fields() ->
 mongo_common_fields() ->
 mongo_common_fields() ->
     [
     [
         {collection,
         {collection,
-            ?HOCON(atom(), #{
+            ?HOCON(binary(), #{
                 required => true,
                 required => true,
                 desc => ?DESC(collection)
                 desc => ?DESC(collection)
             })},
             })},

+ 1 - 0
changes/ce/fix-10098.en.md

@@ -0,0 +1 @@
+A crash with an error in the log file that happened when the MongoDB authorization module queried the database has been fixed.

+ 1 - 0
changes/ce/fix-10098.zh.md

@@ -0,0 +1 @@
+当MongoDB授权模块查询数据库时,在日志文件中发生的崩溃与错误已经被修复。