Bug #81487 innodb buf_resize_thread - release mutexes when no change (contribution)
Submitted: 18 May 2016 12:45 Modified: 19 May 2016 4:54
Reporter: OCA Admin (OCA) Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:5.7 OS:Any
Assigned to: Shaohua Wang CPU Architecture:Any

[18 May 2016 12:45] OCA Admin
Description:
This bug tracks a contribution by Daniel Black (Github user: grooverdan) as described in http://github.com/mysql/mysql-server/pull/74

How to repeat:
See description

Suggested fix:
See contribution code attached
[18 May 2016 12:45] OCA Admin
Contribution submitted via Github - innodb buf_resize_thread - release mutexes when no change 
(*) Contribution by Daniel Black (Github grooverdan, mysql-server/pull/74#issuecomment-219876297): I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.

Contribution: git_patch_70308332.txt (text/plain), 1.03 KiB.

[18 May 2016 12:55] MySQL Verification Team
Hello Daniel,

Thank you for the report and contribution.

Thanks,
Umesh
[19 May 2016 4:14] Daniel Black
I made a mistake. This is invalid.

buf_pool_mutex_exit_all is called at the beginning of the 'if' statement which is sufficient. Sorry for the noise.
[19 May 2016 4:54] Shaohua Wang
We do release all mutexes in buf_resize_thread().

See https://github.com/mysql/mysql-server/blob/5.7/storage/innobase/buf/buf0buf.cc

buf_pool_mutex_enter_all();
		if (srv_buf_pool_old_size == srv_buf_pool_size) {
			buf_pool_mutex_exit_all();  -- released!!!
			std::ostringstream sout;
			sout << "Size did not change (old size = new size = "
				<< srv_buf_pool_size << ". Nothing to do.";
			buf_resize_status(sout.str().c_str());

			/* nothing to do */
			continue;
		}
		buf_pool_mutex_exit_all();