[jboss-jira] [JBoss JIRA] Created: (JBMESSAGING-1756) OrderedExecutorFactory$ChildExecutor doesn't properly set the context class loader

Howard Gao (JIRA) jira-events at lists.jboss.org
Wed Nov 4 02:39:05 EST 2009


OrderedExecutorFactory$ChildExecutor doesn't properly set the context class loader
----------------------------------------------------------------------------------

                 Key: JBMESSAGING-1756
                 URL: https://jira.jboss.org/jira/browse/JBMESSAGING-1756
             Project: JBoss Messaging
          Issue Type: Bug
          Components: JMS Facade
    Affects Versions: 1.4.6.GA, 1.4.5.GA, 1.4.0.SP3.CP09
            Reporter: Howard Gao
            Assignee: Howard Gao
             Fix For: 1.4.0.SP3.CP10, 1.4.6.GA.SP1, 1.4.7.GA


Whenever a new ChildExecutor is created by OrderedExecutorFactory, it holds the reference of the classloader of the current calling thread immediately inside the execute() call, like:

      public void execute(Runnable command)
      {
         if (needToSetClassLoader)
         {
            tcl = SecurityActions.getTCL();
         }
         synchronized (tasks)
         {
            if (!shutdown)
            {
               tasks.add(command);
               if (tasks.size() == 1 && runningChildren.add(this))
               {
                  parent.execute(this);
               }
            }
         }
      }

The initial value for 'needToSetClassLoader' is true. It is changed to 'false' when the tasks is being executed in run() method:

      public void run()
      {
         if (needToSetClassLoader)
         {
            needToSetClassLoader = false;

            SecurityActions.setTCL(SecurityActions.getTCL());
            
         }

         //executing tasks
      }

So in this way, the context classloaders for all the threads are set to be the one from the creating thread. It will cause problems when the creating thread's class loader is no longer valid and the threads are still referencing it.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list