Bug#20422680 BUF_POOL_WATCH_SET WOULD CRASH TRYING

			TO USE A SECOND WATCH PAGE PER INSTANCE

Description:
	BUF_POOL_WATCH_SIZE is also initialized to number of purge threads.
so BUF_POOL_WATCH_SIZE will never be lesser than number of purge threads.
From the code, there is no scope for purge thread to skip buf_pool_watch_unset.
So there can be at most one buffer pool watch active per purge thread.
In other words, there is no chance for purge thread instance to hold a watch
when setting another watch.

Solution:
	Adding code comments to clarify the issue.
Reviewed-by: default avatarMarko Mäkelä <marko.makela@oracle.com>
Approved via Bug page.
parent 26e845c1
/***************************************************************************** /*****************************************************************************
Copyright (c) 1995, 2014, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 1995, 2015, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2008, Google Inc. Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by Portions of this file contain modifications contributed and copyrighted by
...@@ -1528,6 +1528,9 @@ buf_pool_watch_set( ...@@ -1528,6 +1528,9 @@ buf_pool_watch_set(
return(NULL); return(NULL);
} }
/* The maximum number of purge threads should never exceed
BUF_POOL_WATCH_SIZE. So there is no way for purge thread
instance to hold a watch when setting another watch. */
for (i = 0; i < BUF_POOL_WATCH_SIZE; i++) { for (i = 0; i < BUF_POOL_WATCH_SIZE; i++) {
bpage = &buf_pool->watch[i]; bpage = &buf_pool->watch[i];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment