[
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)