diff options
author | Vladislav Vaintroub <wlad@mariadb.com> | 2020-01-22 00:01:25 +0100 |
---|---|---|
committer | Vladislav Vaintroub <wlad@mariadb.com> | 2020-01-22 00:01:25 +0100 |
commit | c20bf8fd494edd4e4931557395b8a2bdf6cc48ab (patch) | |
tree | 04edfaf895cafe915183e3c4d7cb53f6a662c005 /mysql-test/suite/innodb_i_s/innodb_locks.result | |
parent | 92d6c13206b199f24384ed2504ed479b0f59c314 (diff) | |
download | mariadb-git-c20bf8fd494edd4e4931557395b8a2bdf6cc48ab.tar.gz |
MDEV-21551 Fix calculation of current concurrency level in
maybe_wake_or_create_thread()
A task that is executed,could be counted as waiting (after wait_begin()
before wait_end()) or as long-running (callback runs for a long time).
If task is both marked waiting and long running, then calculation of
current concurrency (# of executing tasks - # of long tasks - #of waiting tasks)
is wrong, as task is counted twice.
Thus current concurrency could go negative, but with unsigned arithmetic
it will become a huge number.
As a result, maybe_wake_or_create_thread() would neither wake or create
a thread, when it should. Which may result in a deadlock.
Diffstat (limited to 'mysql-test/suite/innodb_i_s/innodb_locks.result')
0 files changed, 0 insertions, 0 deletions