diff options
author | Håkon Hallingstad <hakon@oath.com> | 2018-06-14 16:04:09 +0200 |
---|---|---|
committer | Håkon Hallingstad <hakon@oath.com> | 2018-06-14 16:04:09 +0200 |
commit | 60773276ccee8a0e181570a59873c3ace4b8dff5 (patch) | |
tree | 17ed47fbaaa73005c068109e492ca1ff33ae8c95 /CMakeLists.txt | |
parent | 8b47b122003f768978acdc22f572e8db31c1e36e (diff) |
Only count time with no threads available
Found this edge-case with logAndDie in ThreadPoolProvider:
- A Runnable executes and finishes at time T0
- No Runnables execute for a long time t > maxThreadExecutionTimeSeconds
- At time T1 = T0 + t, a bursts of Runnables N > maxthreads arrives such that
the (maxthreads+1) Runnable will be tried executed and rejected before any
of the first maxthreads Runnables finish.
- Then, logOrDie will be called immediately.
That is, a sufficiently silent period followed by a burst of Runnables cause
the process to die.
This PR will make sure that the process dies only if
maxThreadExecutionTimeSeconds seconds pass with no available threads, like the
documentation says.
I found this as I was looking for reasons why the Cluster Controller have had
logAndDie problems. The CC has maxthreads of 10, and was getting bursts of 6-8
of a particular request type (reduced in PR 6207).
Diffstat (limited to 'CMakeLists.txt')
0 files changed, 0 insertions, 0 deletions