hhyo / Archery

SQL 审核查询平台
https://archerydms.com
Apache License 2.0
6.1k stars 1.69k forks source link

1.10.0版本执行mongodb工单报错 Json decode failed. #2439

Open qingmengxinghe opened 11 months ago

qingmengxinghe commented 11 months ago

重现步骤

1、执行工单的时候报错, Json decode failed. 校验的时候不报错, 语句如下

db.xxxxxxxx.deleteMany({ "msgTime": { "$gt": "20231201051234", "$lt": "20231201141234" } });

预期外的结果

不知道怎么解决

日志文本

archery.log 内容如下

[2023-12-04 17:54:40,769][MainThread:139713478596416][task_id:default][notify.py:492][ERROR]- failed to notify using `MailNotifier(workflow=<SqlWorkflow: 删除易盾记录>, sys_config=<common.config.SysConfig object at 0x7f1165903610>, name='mail', sys_config_key='mail', event_type=<EventType.AUDIT: 'audit'>, audit=None, audit_detail=None, messages=[])`: 'NoneType' object has no attribute 'audit_id'
[2023-12-04 19:05:13,227][MainThread:139713478596416][task_id:default][mongo.py:498][WARNING]- mongo语句执行报错,语句: db.xxxxxxxx.deleteMany({
     "msgTime": {
            "$gt": "20231201051234",
            "$lt": "20231201141234"
        }
}),错误信息Traceback (most recent call last):
  File "/data/apps/wendy/sql/engines/mongo.py", line 481, in execute
    actual_affected_rows = r.get("deletedCount", 0)
AttributeError: 'str' object has no attribute 'get'

版本

1.10.0

部署方式

K8S

是否还有其他可以辅助定位问题的信息?比如数据库版本等

mongodb 的版本 4.2 部署的archery 使用的 mongo客户端3.6

qingmengxinghe commented 11 months ago

部署方式选错了,是手工部署的

nick2wang commented 11 months ago

麻烦在qcluster日志里找到执行结果发出来看下 https://github.com/hhyo/Archery/blob/10cadc914b8c814faf62d1ccd01e59bd9cfe70f0/sql/engines/mongo.py#L438

frui85 commented 10 months ago

$变量方式不支持吗?我也是

carlors commented 2 months ago

@qingmengxinghe 这个可能是你的mongo客户端和archery官方的版本不一致导致的,可能客户端执行输出结果变了导致解析异常。