Hello,
If my memory doesn't fail me, in the pre-Ignite versions of GridGain, it was
possible to configure custom executor services which would then be used to
create the public, system, utility, etc. thread pools. In Ignite however it's
only possible to configure the size of the thread pools and not their
implementations.
This is unfortunate as I'd like to be able to configure my own ThreadFactory.
My implementation would for example ensure that newly created threads have
their thread locals properly initialized (for example, by storing the local
instance of Ignite in it). Specific use case is being able to get hold of the
local Ignite instance during deserialization when the JVM instance has multiple
Ignite nodes started. Some of my classes must be able to access resources that
are local to the node on which they are being deserialized. At the moment there
is absolutely no way of achieving something like that.
I'm wondering if it would be possible to add this feature back to Ignite? It
seems to be indispensable for unit testing.
Alternatively, to reduce the impact on the public API, an environment variable
that takes an FQN of the ThreadFactory to use would also work. It would be
injectable with the Ignite resources in the manner similar to how it's done for
the closures and factories...
Regards
Andrey
PS. While we're at it, I also remember that in the pre-Ignite versions it was
possible to inject an instance of the public executor service into the
closures. Not anymore. It causes the inconvenience of starting another thread
pool while there is already a public pool managed by Ignite with plenty of
threads idling most of the time... It feels wasteful.