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
The current implementation of ProducerConsumerQueue::put blocks the
caller thread until the queue is not full. One of such callers are the
network workers of the chunkserver. This can cause a significant
decrease in the system responsiveness when the parameter
BGJOBSCNT_PER_NETWORK_WORKER is low given its workload.
The changes proposed are the following:
- make the put function non-blocking, i.e the maxSize parameter of the
pcqueues can be violated.
- check if the job pool is full at the instant of finishing some high
level operation. If the job pool is full close the connection (csentry)
after sending pending statuses or continue using the connection (idle
state).
The intended idea is to allow the pcqueue to have its maxSize limit
violated but not much. The other instances of that class don't set any
element limit.
Side changes:
- rename the WriteFinish state to IOFinish, to better reflect it now
comprises other cases.
Signed-off-by: Dave <dave@leil.io>
0 commit comments