1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-13 20:03:16 +03:00
Commit Graph

20 Commits

Author SHA1 Message Date
Murthy Narkedimilli
03295edb41 Updated/added copyright headers 2013-02-26 06:35:17 +01:00
Thayumanavar
8afcdfe9c0 BUG#14458232 - CRASH IN THD_IS_TRANSACTION_ACTIVE DURING
THREAD POOLING STRESS TEST
PROBLEM:
Connection stress tests which consists of concurrent
kill connections interleaved with mysql ping queries
cause the mysqld server which uses thread pool scheduler
to crash.
FIX:
Killing a connection involves shutdown and close of client
socket and this can cause EPOLLHUP(or EPOLLERR) events to be
to be queued and handled after disarming and cleanup of 
of the connection object (THD) is being done.We disarm the 
the connection by modifying the epoll mask to zero which
ensure no events come and release the ownership of waiting 
thread that collect events and then do the cleanup of THD.
object.As per the linux kernel epoll source code (               
http://lxr.linux.no/linux+*/fs/eventpoll.c#L1771), EPOLLHUP
(or EPOLLERR) can't be masked even if we set EPOLL mask
to zero. So we disarm the connection and thus prevent 
execution of any query processing handler/queueing to 
client ctx. queue by removing the client fd from the epoll        
set via EPOLL_CTL_DEL. Also there is a race condition which
involve the following threads:
1) Thread X executing KILL CONNECTION Y and is in THD::awake
and using mysys_var (holding LOCK_thd_data).
2) Thread Y in tp_process_event executing and is being killed.
3) Thread Z receives KILL flag internally and possible call
the tp_thd_cleanup function which set thread session variable
and changing mysys_var.
The fix for the above race is to set thread session variable
under LOCK_thd_data.
We also do not call THD::awake if we found the thread in the
thread list that is to be killed but it's KILL_CONNECTION flag
set thus avoiding any possible concurrent cleanup. This patch
is approved by Mikael Ronstrom via email review.
2012-11-09 14:54:35 +05:30
Tor Didriksen
e5884b2dbd Bug#14549809 LINKING PROBLEM IN 5.5.28 BUILDS WITH THREADPOOL PLUGIN
The use of Thread_iterator did not work on windows (linking problems).
Solution: Change the interface between the thread_pool and the server
to only use simple free functions.

This patch is for 5.5 only (mimicks similar solution in 5.6)
2012-08-28 16:13:03 +02:00
Thayumanavar
436c0b04cb Bug#13699303 - THREAD POOL PLUGIN IGNORES TIMEOUT.
PROBLEM: 
mysql provides a feature where in a session which is 
idle for a period specified by the wait_timeout variable
(whose value is in seconds), the session is closed
This feature is not present when we use thread pool.
FIX:
This patch implements the interface functions which is 
required to implement the wait_timeout functionality
in the thread pool plugin.
2012-07-25 16:24:18 +05:30
Kent Boortz
9da00ebec9 Updated/added copyright headers 2011-06-30 17:46:53 +02:00
Mikael Ronström
4c95c5d8f6 BUG#12578441, reintroduced thd->cleanup() in unlink_thd, removed by mistake, added private interface to this function 2011-05-25 12:17:27 +02:00
Mikael Ronström
215ce05aba Split up unlink_thd in several functions 2011-05-18 09:38:05 +02:00
Mikael Ronström
97036a97a1 Changed name to better reflect function logic in accordance with WL#5788 2011-04-15 13:02:29 +02:00
Mikael Ronström
9674845b7b more docs of the thread pool interface 2011-02-17 10:57:57 +01:00
Mikael Ronström
65d15025e5 added interface to scheduler.h 2011-02-17 10:50:51 +01:00
Mikael Ronström
1b96d75eeb Further work on thread pool interface 2011-02-17 10:48:44 +01:00
Mikael Ronström
fef450b17f More work on interfaces 2011-02-16 20:38:35 +01:00
Mikael Ronström
b04b333e25 Defined private interface to THD variables, first step to plugin API 2011-02-16 19:30:02 +01:00
Mikael Ronström
016d91e285 Removed scheduler struct for now 2011-02-10 19:29:27 +01:00
Mikael Ronström
e51abaa128 Simplifications of server interface to scheduler 2011-02-10 19:24:31 +01:00
Mikael Ronström
8620faf425 Simplify interface to connect methods in server 2011-02-10 18:41:02 +01:00
Mikael Ronström
24f72c368c Updated thread_pool_priv.h with additional includes for thread pool plugins 2011-02-10 16:19:38 +01:00
Mikael Ronstrom
a6686d0adc Temporary fix 2011-01-24 15:04:35 +01:00
Mikael Ronstrom
787dd59926 BUG#59549, Fix compiler errors on Windows, step 5 2011-01-24 14:57:07 +01:00
Mikael Ronstrom
965d0953c1 Added thread pool interface to server 2011-01-14 09:40:18 +01:00