[MDEV-6847] query timeout, executing kill only if we got a lock contention Created: 2014-10-07  Updated: 2015-11-17

Status: Open
Project: MariaDB Server
Component/s: OTHER
Fix Version/s: None

Type: Task Priority: Major
Reporter: roberto spadim Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-4427 query timeouts Closed

 Description   

now with query timeouts being implemented
we could allow a timeout checking if any other connection have a lock contention with the current query

at a high level (show processlist) we can know if a thread is blocking or not other query checking the tables being used (maybe mdl?) but sometimes with innodb it's difficult to find since we have row level locks

the idea is create a method to check others process when the current query is timed out, if no other connection have a lock contention don't allow the kill command, if we found a lock contention allow the kill command and kill the current query

in others words when thread receive a kill_timeout, we check if we could return false/true and update the process information with (killing or timedout)



 Comments   
Comment by Sergei Golubchik [ 2015-01-27 ]

but there are lock timeouts, they should apply here. query timeout limits the total query duration, locks or not. that would be illogical if it will only kill during lock waits.

Comment by roberto spadim [ 2015-01-27 ]

Hi sergei!, check the idea...

kill timeout = 5 seconds
(1) SELECT FROM tables ..... (will run for 600 seconds)
.... after 33 seconds
(2) UPDATE tables WHERE ... (wait the select ends...)
.... after 5 seconds...
kill (1) SELECT command cause we wait 5 seconds from the update waiting lock

the idea is not limit the SELECT time, the idea is limit the SELECT time that block others queries (update/delete/insert/replace/alter/etc)
this cause (1) to restart while someone possible changed the data
some storage engines return a lock timeout at UPDATE clausule and software/dba must retry the UPDATE, but the idea is the oposite, allow the UPDATE to run, and kill the SELECT query

Generated at Thu Feb 08 07:15:02 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.