Hi All
Looking at the definition of a ManagedExecutorService, such as below, it
looks like there isn't a way to force the service to have no queue, and
always use more threads, up to the max threads.
If you consider this definition:
<Resource
id="MyManagedExecutor"
type="javax.enterprise.concurrent.ManagedExecutorService">
Core=5
Max=150
KeepAlive=60s
Queue=0
WaitAtShutdown=5s
</Resource>
Per the logic here:
https://github.com/apache/tomee/blob/758e64e7fb69862c94233669531902b65bc1ab80/container/openejb-core/src/main/java/org/apache/openejb/resource/thread/ManagedExecutorServiceImplFactory.java#L77-L81
,
If size is specified (>0), anything executed will be added to the queue,
and the threadpool will only increase from the core size to the max size
when the queue is full.
If size is 0 or negative, the same behaviour applies, but the queue is
unbounded (so the thread pool will not grow at all).
There's no way to specify a zero sized queue (and always grow the thread
pool up to max; and reject work if all threads are busy and the pools is at
the max size).
What are peoples thoughts on a change like this one?
https://github.com/apache/tomee/pull/2011
This does change the behaviour, and I'm not necessarily a fan of "magic"
numbers - an additional boolean setting to control the behaviour might be
an alternative?
What do you think?
Jon