[jboss-jira] [JBoss JIRA] (JBJCA-1087) Leak of WorkManager and BootstrapContext
Bartosz Baranowski (JIRA)
jira-events at lists.jboss.org
Fri Oct 4 08:58:02 EDT 2013
Bartosz Baranowski created JBJCA-1087:
-----------------------------------------
Summary: Leak of WorkManager and BootstrapContext
Key: JBJCA-1087
URL: https://issues.jboss.org/browse/JBJCA-1087
Project: IronJacamar
Issue Type: Bug
Components: Core
Affects Versions: 1.1.0.Final
Reporter: Bartosz Baranowski
Assignee: Jesper Pedersen
There seems to be a leak of WorkManager and BootstrapContext clones.
NOTE: The clones are not standalone, for instance WorkManagerImpl.shutdown reference is shared among all clones, if one is shutdown, all of them are.
The coordinators have an internal map of name/id -> [ BootstrapContext | WorkManager ]. They keep clones of default instance in it. In IJ code, deployers invoke coordinator.remove() method to keep it clean. However this does not happen in WFLY/AS7 ( only create is called ).
Here is a step by step scenario( more or less ):
1. WFLY boots
2. WorkManagerService is created( along with WorkManager instance, the default used in WMCoordinator )
3. RA is deployed/activated
4. IJ checks if there is BootstrapContext/WorkManager under "X", there is none, IJ creates clone of WM from #2 and BootstrapContext, its stored under "X" in coordinators
5. Normal operations, msgs exchange, etc.
6. WFLY reload is called
7. WM from #2 shutdown() is called, this renders the clone stored under "X" as shutdown as well.
8. WFLY boots again
9. new WorkManagerService is created( along with WorkManager instance, the default used in WMCoordinator )
10. RA is deployed/activate
11. IJ checks if there is BootstrapContext/WorkManager under "X", there is, this instance is returned.
#11 old instance, which is shutdown since #7, is passed as WorkManager. This explodes:
{noformat}
ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 29) MSC000001: Failed to start service jboss.deployment.unit."mdb.jar".component.MDBLifecycleCallback.START: org.jboss.msc.service.StartException in service jboss.deployment.unit."mdb.jar".component.MDBLifecycleCallback.START: java.lang.RuntimeException: javax.resource.spi.work.WorkRejectedException: IJ000263: WorkManager is shutting down
at org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:57)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_25]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [rt.jar:1.7.0_25]
at java.util.concurrent.FutureTask.run(FutureTask.java:166) [rt.jar:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final.jar:2.1.1.Final]
Caused by: java.lang.RuntimeException: javax.resource.spi.work.WorkRejectedException: IJ000263: WorkManager is shutting down
at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponent.activate(MessageDrivenComponent.java:218)
at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponent.start(MessageDrivenComponent.java:189)
at org.jboss.as.ee.component.ComponentStartService$1.run(ComponentStartService.java:54)
... 7 more
Caused by: javax.resource.spi.work.WorkRejectedException: IJ000263: WorkManager is shutting down
at org.jboss.jca.core.workmanager.WorkManagerImpl.doFirstChecks(WorkManagerImpl.java:776)
at org.jboss.jca.core.workmanager.WorkManagerImpl.scheduleWork(WorkManagerImpl.java:617)
at org.jboss.jca.core.workmanager.WorkManagerImpl.scheduleWork(WorkManagerImpl.java:602)
at org.hornetq.ra.inflow.HornetQActivation.start(HornetQActivation.java:259)
at org.hornetq.ra.HornetQResourceAdapter.endpointActivation(HornetQResourceAdapter.java:167)
at org.jboss.jca.core.rar.EndpointImpl.activate(EndpointImpl.java:191)
at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponent.activate(MessageDrivenComponent.java:216)
... 9 more
{noformat}
Steps to reproduce:
1. Setup an adapter deployment
2. reload
3. deploy MDB
The reload OP has small bug, this branch (https://github.com/baranowb/wildfly/tree/WFLY-2217) has it fixed.
Example test set:
{noformat}
mvn clean install -DallTest -Dtest=CustomBootstrapContextTestCase,GetCallerPrincipalTestCase
{noformat}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the jboss-jira
mailing list