matrixorigin / matrixone

Hyperconverged cloud-edge native database
https://docs.matrixorigin.cn/en
Apache License 2.0
1.72k stars 271 forks source link

[Bug]: Query is not cancelled when the GORM cancels it #15310

Closed DanielZhangQD closed 1 week ago

DanielZhangQD commented 3 months ago

Is there an existing issue for the same bug?

Branch Name

1.1.2

Commit ID

v1.1.2-1519f8e5c-2024-04-02

Other Environment Information

- Hardware parameters:
- OS type:
- Others:

Actual Behavior

60s timeout is set:

2024/04/03 02:53:22.007878 +0000 ERROR errgroup/errgroup.go:75 trace {"error": "context canceled", "elapsed": "59.888019679s", "rows": 0, "sql": "/* cloud_nonuser */ SELECT count(*) FROM `system`.`statement_info` WHERE 1=1 AND `request_at` >= '2024-03-03 12:00:41' AND `request_at` <= '2024-03-31 13:00:00' AND system.statement_info.account = '6d966d73_a195_437e_88f8_7f75b3cc6496' AND sql_source_type IN ('cloud_user_sql','external_sql') "}
2024/04/03 02:53:22.007878 +0000 ERROR errgroup/errgroup.go:75 trace {"error": "context canceled", "elapsed": "59.888012972s", "rows": 0, "sql": "/* cloud_nonuser */ SELECT * FROM (select `statement`,system.statement_info.statement_id,IF(`status`='Running', TIMESTAMPDIFF(MICROSECOND,`request_at`,now())*1000, `duration`) AS `duration`,`status`,`query_type`,`request_at`,system.statement_info.response_at,`user`,`database`,`transaction_id`,`session_id`,`rows_read`,`bytes_scan`,`result_count` from system.statement_info where 1=1 AND `request_at` >= '2024-03-03 12:00:41' AND `request_at` <= '2024-03-31 13:00:00' AND system.statement_info.account = '6d966d73_a195_437e_88f8_7f75b3cc6496' AND sql_source_type IN ('cloud_user_sql','external_sql') )t ORDER BY request_at DESC LIMIT 50"}

The queries continue to run after cancelled:

MySQL [(none)]> select statement_id,statement,status,duration/1e9,error from system.statement_info where request_at >= '2024-04-03 02:50:00' and statement_id in ('018ea1df-2ee7-791b-8dbf-77132bf5685b','018ea1df-2ee8-7b1c-86e6-2b6aee3f2175');
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------+-------+
| statement_id                         | statement                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | status  | duration / 1e9 | error |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------+-------+
| 018ea1df-2ee7-791b-8dbf-77132bf5685b | SELECT count(*) FROM `system`.`statement_info` WHERE 1=1 AND `request_at` >= '2024-03-03 12:00:41' AND `request_at` <= '2024-03-31 13:00:00' AND system.statement_info.account = '6d966d73_a195_437e_88f8_7f75b3cc6496' AND sql_source_type IN ('cloud_user_sql','external_sql')                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Success |  124.362433823 |       |
| 018ea1df-2ee8-7b1c-86e6-2b6aee3f2175 | SELECT * FROM (select `statement`,system.statement_info.statement_id,IF(`status`='Running', TIMESTAMPDIFF(MICROSECOND,`request_at`,now())*1000, `duration`) AS `duration`,`status`,`query_type`,`request_at`,system.statement_info.response_at,`user`,`database`,`transaction_id`,`session_id`,`rows_read`,`bytes_scan`,`result_count` from system.statement_info where 1=1 AND `request_at` >= '2024-03-03 12:00:41' AND `request_at` <= '2024-03-31 13:00:00' AND system.statement_info.account = '6d966d73_a195_437e_88f8_7f75b3cc6496' AND sql_source_type IN ('cloud_user_sql','external_sql') )t ORDER BY request_at DESC LIMIT 50 | Success |  124.369069387 |       |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+----------------+-------+
2 rows in set (0.39 sec)

Expected Behavior

Queries are cancelled when GORM cancels them

Steps to Reproduce

See detail in Actual Behavior

Additional information

No response

ck89119 commented 3 months ago

处理sql执行超时的位置在

image image

会做releaseConn操作,但是releaseConn只是在客户端侧把conn放回pool复用,并不会发送类似取消查询的请求到db侧

image

类似问题讨论:https://github.com/go-gorm/gorm/discussions/6377

sukki37 commented 1 week ago

This issue has been inactive. Closing to keep the tracker clean. Reopen if still relevant. Thanks!