You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Valentin Kulichenko (JIRA)" <ji...@apache.org> on 2015/06/02 06:13:17 UTC

[jira] [Created] (IGNITE-967) Internal thread locals are not always cleaned

Valentin Kulichenko created IGNITE-967:
------------------------------------------

             Summary: Internal thread locals are not always cleaned
                 Key: IGNITE-967
                 URL: https://issues.apache.org/jira/browse/IGNITE-967
             Project: Ignite
          Issue Type: Bug
          Components: general
    Affects Versions: sprint-4
            Reporter: Valentin Kulichenko


One of our users reported that he sees warnings in Tomcat's log when the application that's running Ignite in embedded mode is undeployed:
{noformat}
SEVERE: The web application [/XXX] created a ThreadLocal with key of type [org.apache.ignite.internal.util.GridSpinReadWriteLock$1] (value [org.apache.ignite.internal.util.GridSpinReadWriteLock$1@2c2858af]) and a value of type [java.lang.Integer] (value [0]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
{noformat}
There is also the similar warning for {{GridToStringBuilder.threadCache}}. 

While it's usually OK not to clean thread locals on standalone node, in app server it can cause a memory leak.

To avoid such issues I suggest to add a special step after all test suites that will check thread locals in test runner thread. If we have this check in CI, we will fix it once and for always.

Thread local values can be introspected through {{Thread.threadLocals}} variable. It would also be a good idea to check Tomcat's sources on how it's done there.



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