[
https://issues.apache.org/jira/browse/IGNITE-2492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16021262#comment-16021262
]
Pavel Tupitsyn edited comment on IGNITE-2492 at 5/23/17 2:34 PM:
-----------------------------------------------------------------
[~vozerov], peer deploying assemblies to a separate AppDomain allows unloading,
but has the following issues:
* Multiple AppDomains are not supported in .NET Core (Cross-platform .NET,
IGNITE-2662)
* AppDomains do not share anything. Static variables have different values, you
can't pass object references from one to another. So user code will observe
unexpected behavior with static state
* AppDomains are expensive. We'll have to spin up all Ignite APIs in a separate
domain again, register binary types, prepare reflective actions, and so on.
Managing lifetime of these objects and JNI interop will be complicated.
Given all of the above, I propose the following:
* Replace {{IgniteConfiguration.PeerAssemblyLoadingEnabled}} with an enum
{{IgniteConfiguration.PeerAssemblyLoadingMode}} with values {{None}} (default)
and {{SameAppDomain}}.
* Release current implementation and implement isolated mode later.
This way users have clear understanding of what is going on and that other
modes will be added in future.
Agreed?
was (Author: ptupitsyn):
[~vozerov], peer deploying assemblies to a separate AppDomain allows unloading,
but has the following issues:
* Multiple AppDomains are not supported in .NET Core (Cross-platform .NET,
IGNITE-2662)
* AppDomains do not share anything. Static variables have different values, you
can't pass object references from one to another. So user code will observer
unexpected behavior with static state
* AppDomains are expensive. We'll have to spin up all Ignite APIs in a separate
domain again, register binary types, prepare reflective actions, and so on.
Managing lifetime of these objects and JNI interop will be complicated.
Given all of the above, I propose the following:
* Replace {{IgniteConfiguration.PeerAssemblyLoadingEnabled}} with an enum
{{IgniteConfiguration.PeerAssemblyLoadingMode}} with values {{None}} (default)
and {{SameAppDomain}}.
* Release current implementation and implement isolated mode later.
This way users have clear understanding of what is going on and that other
modes will be added in future.
Agreed?
> .NET: Peer assembly loading
> ---------------------------
>
> Key: IGNITE-2492
> URL: https://issues.apache.org/jira/browse/IGNITE-2492
> Project: Ignite
> Issue Type: New Feature
> Components: platforms
> Affects Versions: 1.1.4
> Reporter: Pavel Tupitsyn
> Assignee: Pavel Tupitsyn
> Labels: .net, important
> Fix For: 2.1
>
>
> Similar to peer class loading in Java, we can provide a possibility to load
> assemblies on already started nodes, so that a node can execute jobs that are
> not present on other nodes.
> Considerations:
> * Can we unload assemblies after use to free memory? This requires a separate
> AppDomain, can we work with that?
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)