Andrey Kornev created IGNITE-1898:
-------------------------------------

             Summary: Make it possible to obtain the local Ignite instance 
statically
                 Key: IGNITE-1898
                 URL: https://issues.apache.org/jira/browse/IGNITE-1898
             Project: Ignite
          Issue Type: Improvement
          Components: general
            Reporter: Andrey Kornev
            Priority: Minor


Currently the ways to obtain the local instance of Ignite make use of the grid 
name or the node UUID with the corresponding {{Ignition.ignite()}} methods. 
However, during deserialization if would sometime be desirable to be able to 
obtain the local instance of Ignite (the one on which the given class is being 
deserialized) without relying on the grid name. Such instance can then be used 
to look up the node-local resources and any other context. The grid name is not 
reliable way to serialize/deserialize {{IgniteKernal}} in a situation when a 
single JVM has multiple Ignite nodes started (as is often the case in unit 
tests).

The proposed solution is to
# implement a custom ThreadFactory to be used with the public, system, utility 
and so on thread pools. For all newly created thread, the factory will create a 
thread local and initialize it with the current instance of Ignite.
# modify the classes that create their own threads, to do the same.
# provide a public static method on the Ignition class
{{public static Ignite getLocalNode();}}
that returns the value of the thread local. It throws {{IllegalStateException}} 
if the method is invoked from a non-Ignite thread.

This will guarantee that all threads started by a particular Ignite instance 
will have the instance reference available in their thread locals.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to