[ https://issues.apache.org/jira/browse/IGNITE-1898?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Yakov Zhdanov resolved IGNITE-1898. ----------------------------------- Resolution: Won't Fix > 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)