Yanqin Jin f15414b656 Timer should run scheduled function without mutex (#7228)
Summary:
Timer (defined in timer.h) schedules and runs user-specified fuctions
regularly. Current implementation holds the mutex while running user
function, which will lead to contention and waiting.
To fix, Timer::Run releases mutex before running user function, and
re-acquires it afterwards.
This fix will impact how we can cancel a task. If the task is running,
it is not holding the mutex. The thread calling Cancel() should wait
until the current task finishes.

Test Plan (devserver):
make check
COMPILE_WITH_ASAN=1 make check

Pull Request resolved: https://github.com/facebook/rocksdb/pull/7228

Reviewed By: jay-zhuang

Differential Revision: D23065487

Pulled By: riversand963

fbshipit-source-id: 07cb59741f506d3eb875c8ab90f73437568d3724
2020-08-11 22:37:39 -07:00
..
2017-07-15 16:11:23 -07:00
2020-03-06 16:24:27 -08:00
2020-04-20 13:24:25 -07:00
2020-04-20 13:24:25 -07:00
2020-04-20 13:24:25 -07:00
2020-07-09 14:35:17 -07:00
2020-07-09 14:35:17 -07:00
2017-07-15 16:11:23 -07:00
2020-04-20 13:24:25 -07:00