The search threadpool needs to run two main kinds of tasks: query tasks and fetch tasks. We should consider force-adding fetch tasks to the queue even in the event that the queue is already full. The reasoning is that fetch tasks may only be follow-up to query tasks, so the number of additional fetch tasks that may enter the threadpool is expected to be reasonable.
We already have infrastructure for this with SizeBlockingQueue.forcePut and AbstractRunnable.isForceExecution, which we use for the can_match phase.
The search threadpool needs to run two main kinds of tasks: query tasks and fetch tasks. We should consider force-adding fetch tasks to the queue even in the event that the queue is already full. The reasoning is that fetch tasks may only be follow-up to query tasks, so the number of additional fetch tasks that may enter the threadpool is expected to be reasonable.
We already have infrastructure for this with
SizeBlockingQueue.forcePutandAbstractRunnable.isForceExecution, which we use for thecan_matchphase.