mirror of
https://github.com/MariaDB/server.git
synced 2025-01-21 06:22:28 +01:00
3ea0fd9d89
BUG#42101 - Race condition in innodb_commit_concurrency Detailed revision comments: r4994 | marko | 2009-05-14 15:04:55 +0300 (Thu, 14 May 2009) | 18 lines branches/5.1: Prevent a race condition in innobase_commit() by ensuring that innodb_commit_concurrency>0 remains constant at run time. (Bug #42101) srv_commit_concurrency: Make this a static variable in ha_innodb.cc. innobase_commit_concurrency_validate(): Check that innodb_commit_concurrency is not changed from or to 0 at run time. This is needed, because innobase_commit() assumes that innodb_commit_concurrency>0 remains constant. Without this limitation, the checks for innodb_commit_concurrency>0 in innobase_commit() should be removed and that function would have to acquire and release commit_cond_m at least twice per invocation. Normally, innodb_commit_concurrency=0, and introducing the mutex operations would mean significant overhead. innodb_bug42101.test, innodb_bug42101-nonzero.test: Test cases. rb://123 approved by Heikki Tuuri
22 lines
613 B
Text
22 lines
613 B
Text
set global innodb_commit_concurrency=0;
|
|
ERROR HY000: Incorrect arguments to SET
|
|
select @@innodb_commit_concurrency;
|
|
@@innodb_commit_concurrency
|
|
1
|
|
set global innodb_commit_concurrency=1;
|
|
select @@innodb_commit_concurrency;
|
|
@@innodb_commit_concurrency
|
|
1
|
|
set global innodb_commit_concurrency=42;
|
|
select @@innodb_commit_concurrency;
|
|
@@innodb_commit_concurrency
|
|
42
|
|
set global innodb_commit_concurrency=0;
|
|
ERROR HY000: Incorrect arguments to SET
|
|
select @@innodb_commit_concurrency;
|
|
@@innodb_commit_concurrency
|
|
42
|
|
set global innodb_commit_concurrency=1;
|
|
select @@innodb_commit_concurrency;
|
|
@@innodb_commit_concurrency
|
|
1
|