Bug #45749 Race condition in SET GLOBAL innodb_commit_concurrency=DEFAULT
Submitted: 25 Jun 2009 13:42 Modified: 5 Aug 2009 1:57
Reporter: Marko Mäkelä
Status: Closed
Category:Server: InnoDB Severity:S1 (Critical)
Version:5.1 OS:Any
Assigned to: Satya B Target Version:5.1+
Triage: Triaged: D2 (Serious) / R1 (None/Negligible) / E1 (None/Negligible)

[25 Jun 2009 13:42] Marko Mäkelä
Description:
There is a hole in the fix of Bug #42101: The statement
SET GLOBAL innodb_commit_concurrency=DEFAULT;
will set the commit concurrency to 0 when InnoDB was started with
innodb_commit_concurrency>0.

How to repeat:
mysqld --innodb_commit_concurrency=1
SELECT @@innodb_commit_concurrency; -- should be 1
SET GLOBAL innodb_commit_concurrency=0; -- fails
SET GLOBAL innodb_commit_concurrency=DEFAULT; -- sets to 0, BUG!
SELECT @@innodb_commit_concurrency; -- should be 1, but is 0

Suggested fix:
Add an _update callback that will ignore the request. Or have MySQL call the _validate
callback when setting to DEFAULT value.
[25 Jun 2009 14:11] Marko Mäkelä
The fix is even simpler: assign
	MYSQL_SYSVAR_NAME(commit_concurrency).def_val
		= innobase_commit_concurrency;
before calling innobase_start_or_create_for_mysql(). In that way, the initial value of
innodb_commit_concurrency will become the default value.
[10 Jul 2009 12:36] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/78370

3019 Satya B	2009-07-10
      Applying InnoDB snapshot 5.1-ss5488,part 2. Fixes BUG#45749
      
      BUG#45749 - Race condition in SET GLOBAL innodb_commit_concurrency=DEFAULT
      
      Detailed revision comments:
      
      r5419 | marko | 2009-06-25 16:11:57 +0300 (Thu, 25 Jun 2009) | 18 lines
      branches/5.1: Merge r5418 from branches/zip:
      
        ------------------------------------------------------------------------
        r5418 | marko | 2009-06-25 15:55:52 +0300 (Thu, 25 Jun 2009) | 5 lines
        Changed paths:
           M /branches/zip/ChangeLog
           M /branches/zip/handler/ha_innodb.cc
           M /branches/zip/mysql-test/innodb_bug42101-nonzero.result
           M /branches/zip/mysql-test/innodb_bug42101-nonzero.test
           M /branches/zip/mysql-test/innodb_bug42101.result
           M /branches/zip/mysql-test/innodb_bug42101.test
        
        branches/zip: Fix a race condition caused by
        SET GLOBAL innodb_commit_concurrency=DEFAULT. (Bug #45749)
        When innodb_commit_concurrency is initially set nonzero,
        DEFAULT would change it back to 0, triggering Bug #42101.
        rb://139 approved by Heikki Tuuri.
        ------------------------------------------------------------------------
      modified:
        mysql-test/r/innodb_bug42101-nonzero.result
        mysql-test/r/innodb_bug42101.result
        mysql-test/t/innodb_bug42101-nonzero.test
        mysql-test/t/innodb_bug42101.test
        storage/innobase/handler/ha_innodb.cc
[10 Jul 2009 14:08] Satya B
patch queued to 5.1-bugteam
[13 Jul 2009 19:48] Bugs System
Pushed into 5.1.37 (revid:joro@sun.com-20090713174543-cd2x7q1gi1hzoand) (version source
revid:staale.smedseng@sun.com-20090710151930-6e6kq5tp7ux1rtbh) (merge vers: 5.1.37)
(pib:11)
[13 Jul 2009 21:20] Paul DuBois
Noted in 5.1.37 changelog.

There was a race condition when changing innodb_commit_concurrency at
runtime to the value DEFAULT. 

Setting report to NDI pending push into 5.4.x.
[4 Aug 2009 21:49] Bugs System
Pushed into 5.4.4-alpha (revid:alik@sun.com-20090804194615-h40sa098mx4z49qg) (version
source revid:satya.bn@sun.com-20090710114411-lthb9gmm9l2ui9ig) (merge vers: 5.4.4-alpha)
(pib:11)
[5 Aug 2009 1:57] Paul DuBois
Noted in 5.4.4 changelog.
[13 Aug 2009 0:15] Paul DuBois
Noted in 5.4.2 changelog because next 5.4 version will be 5.4.2 and not 5.4.4.
[15 Aug 2009 1:04] Paul DuBois
Ignore previous comment about 5.4.2.
[26 Aug 2009 15:45] Bugs System
Pushed into 5.1.37-ndb-7.0.8 (revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l)
(version source revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (merge vers:
5.1.37-ndb-7.0.8) (pib:11)
[26 Aug 2009 15:46] Bugs System
Pushed into 5.1.37-ndb-6.3.27 (revid:jonas@mysql.com-20090826105955-bkj027t47gfbamnc)
(version source revid:jonas@mysql.com-20090826105955-bkj027t47gfbamnc) (merge vers:
5.1.37-ndb-6.3.27) (pib:11)
[26 Aug 2009 15:48] Bugs System
Pushed into 5.1.37-ndb-6.2.19 (revid:jonas@mysql.com-20090825194404-37rtosk049t9koc4)
(version source revid:jonas@mysql.com-20090825194404-37rtosk049t9koc4) (merge vers:
5.1.37-ndb-6.2.19) (pib:11)
[27 Aug 2009 18:32] Bugs System
Pushed into 5.1.35-ndb-7.1.0 (revid:magnus.blaudd@sun.com-20090827163030-6o3kk6r2oua159hr)
(version source revid:jonas@mysql.com-20090826132541-yablppc59e3yb54l) (merge vers:
5.1.37-ndb-7.0.8) (pib:11)
[7 Oct 2009 20:28] Paul DuBois
The 5.4 fix has been pushed to 5.4.2.