Hi,

Looking at threads since there's a proliferation of executors and loose
threads, I notice a possible refactoring:
- start/stopExecutor is an obvious target, but by default is not there.
However, it does not delegate to the parent container if not there.
- The background thread is a loose thread, if the start/stopExecutor or
whatever it is was a ScheduledThreadPoolExecutor, then it can probably be
refactored.
- Some executors in the clustering code, they could be run by that
"start/stopExecutor" of thir parent container.
- As for the catalina.Executor(s) in the Service, it could still wrap all
this stuff, *if* our ThreadPoolExecutor used a ScheduledThreadPoolExecutor
instead (at least as an option).

So .. Options are:
a) Do nothing.
b) Merge everything except catalina.Executor into a new
ScheduledThreadPoolExecutor at the Container level (and delegate to
parent), so the Engine will have it by default. Given how the background
thread delay config and how startStopThreads work, this can remain mostly
compatible, except some internal API from the start/stop executor is going
to be gone.
c) Merge everything into one executor. Hopefully NIO2 users remember they
should give their connector its own executor.

So personally, I think b) is nice as the Excecutor is more for connector
pools configuration and we shouldn't pollute that with side uses. Is that
doable in 9, or should it be added to the "10" todo list ?

Comments ?

Rémy

Reply via email to