[ 
https://issues.apache.org/jira/browse/IGNITE-12837?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17066903#comment-17066903
 ] 

Andrey Davydov commented on IGNITE-12837:
-----------------------------------------

I use IgniteWeakRefTracker (see attach) to check if thereis leaked Ignite. Feel 
free to use.

 

 

> Make sure Ignite leaves nothing in static fields after node is stopped, write 
> test
> ----------------------------------------------------------------------------------
>
>                 Key: IGNITE-12837
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12837
>             Project: Ignite
>          Issue Type: Improvement
>          Components: general
>            Reporter: Ilya Kasnacheev
>            Priority: Major
>         Attachments: IgniteWeakRefTracker.java
>
>
> {code}
> There are at least two way link to IgniteKernal leaks to GC root and makes it
> unavailable for GC.
>   1. The first one:
> this - value: org.apache.ignite.internal.IgniteKernal #1
> <\- grid - class: org.apache.ignite.internal.GridKernalContextImpl, value:
> org.apache.ignite.internal.IgniteKernal #1
> <\- ctx - class:
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing, value:
> org.apache.ignite.internal.GridKernalContextImpl #2
> <\- this$0 - class:
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$10, value:
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing #2
> <\- serializer - class: org.h2.util.JdbcUtils, value:
> org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing$10 #1
> <\- [5395] - class: java.lang.Object[], value: org.h2.util.JdbcUtils class
> JdbcUtils
> <\- elementData - class: java.util.Vector, value: java.lang.Object[] #37309
> <\- classes - class: sun.misc.Launcher$AppClassLoader, value: java.util.Vector
> #31
> <\- contextClassLoader (thread object) - class: java.lang.Thread, value:
> sun.misc.Launcher$AppClassLoader #1
> org.h2.util.JdbcUtils has static field JavaObjectSerializer serializer, which
> see IgniteKernal via IgniteH2Indexing. It make closed and stopped IgniteKernal
> non collectable by GC.
> If some Ignites run in same JVM, JdbcUtils will always use only one, and it
> can cause some races.
>   2. The second way:
> this - value: org.apache.ignite.internal.IgniteKernal #2
> <\- grid - class: org.apache.ignite.internal.GridKernalContextImpl, value:
> org.apache.ignite.internal.IgniteKernal #2
> <\- ctx - class: org.apache.ignite.internal.processors.cache.GridCacheContext,
> value: org.apache.ignite.internal.GridKernalContextImpl #1
> <\- cctx - class:
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry,
> value: org.apache.ignite.internal.processors.cache.GridCacheContext #24
> <\- parent - class:
> org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate, value:
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheEntry
> #4
> <\- [0] - class: java.lang.Object[], value:
> org.apache.ignite.internal.processors.cache.GridCacheMvccCandidate #1
> <\- elements - class: java.util.ArrayDeque, value: java.lang.Object[] #43259
> <\- value - class: java.lang.ThreadLocal$ThreadLocalMap$Entry, value:
> java.util.ArrayDeque #816
> <\- [119] - class: java.lang.ThreadLocal$ThreadLocalMap$Entry[], value:
> java.lang.ThreadLocal$ThreadLocalMap$Entry #51
> <\- table - class: java.lang.ThreadLocal$ThreadLocalMap, value:
> java.lang.ThreadLocal$ThreadLocalMap$Entry[] #21
> <\- threadLocals (thread object) - class: java.lang.Thread, value:
> java.lang.ThreadLocal$ThreadLocalMap #2
> {code}
> as reported on mailing list.
> I suggest we fix that (make sure Ignite node leaves nothing in static 
> fields/GC roots after it is stopped). I also suggest we introduce a check, 
> probably by using jmap and searching dump for IgniteKernal, etc.
> It would also be nice to check that if Ignite is loaded to non-root class 
> loader, started and stopped, it would allow this class-loader to unload 
> Ignite classes.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to