You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
2/2
Patch for 7.6 Only
Context:
MTR test ndb_restore_schema_tolerance fail sporadically
due to an error in DBUTIL. Util has a pool of prepared
operations that stores the Prepared Operations until they
are executed.
The pool has a fixed size of 6 where 4 are 'reserved' for
some operations on special tables, so, in fact, there
are only 2 available spaces in preparedOperationPoll.
When UTIL handles many preperareOperation simultaneous
the pool can get exhausted because it fails seize a free
object in the pool to store the new prepared op.
In a similar way, runningPrepares pool used by UTIL
to store the running prepare operations, can also be
exhausted. The pool size is 1 but there is nothing
preventing TRIX/DICT to send many UTIL_PREPARE_REQ
in parallel to UTIL. In that scenario UTIL will fail to
seize a free object for the new running prepare operation.
Problem:
Test fail to create table because the prepared operation triggered
by trix to build the index stats of the new table finds one the
util pool exhausted.
Solution:
UTIL changed to distinguish between internal Prepared Operations
(from TRIX) and Prepared Operation for events (from DICT).
In both pools a special space for internal prepare
operations is reserved, remaining space is for prepOps from DICT
as before. This way we ensure that, in a scenario where UTIL
is force to handle many concurrent operation the internal ones
are priority and there will be always a free space
in both pools for them.
Change-Id: I3625e08cc29f341be6d77b5a60885af6e5f601cc
0 commit comments