-
Bug
-
Resolution: Fixed
-
P3
-
6
-
b53
-
b57
-
generic
-
generic
-
Verified
That regression comes with b53.
The attached test code is about 8 threads running in parallel; each thread:
- builds a unique ObjectName
- loop over a sequence new MBeanClass(); registerMBean(); unregisterMBean;
After a various number of cycles in the range [1-200], one or several thread die with an InstanceNotFoundException at unregister time.
Less often, you may observe an InstanceAlreadyExistsException at register time.
Stacks:
java.util.concurrent.ExecutionException: javax.management.InstanceNotFoundException: sqe:type=Basic,creatorID=7
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:223)
at java.util.concurrent.FutureTask.get(FutureTask.java:84)
at Defect.run(Defect.java:59)
at Defect.main(Defect.java:25)
Caused by: javax.management.InstanceNotFoundException: sqe:type=Basic,creatorID=7
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1075)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:503)
at Defect$MXBeanCreator.call(Defect.java:130)
at Defect$MXBeanCreator.call(Defect.java:97)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:139)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)
java.util.concurrent.ExecutionException: javax.management.InstanceAlreadyExistsException: sqe:type=Basic,creatorID=7
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:223)
at java.util.concurrent.FutureTask.get(FutureTask.java:84)
at Defect.run(Defect.java:59)
at Defect.main(Defect.java:25)
Caused by: javax.management.InstanceAlreadyExistsException: sqe:type=Basic,creatorID=7
at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1465)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:944)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:898)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:479)
at Defect$MXBeanCreator.call(Defect.java:127)
at Defect$MXBeanCreator.call(Defect.java:97)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:139)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)
The attached test code is about 8 threads running in parallel; each thread:
- builds a unique ObjectName
- loop over a sequence new MBeanClass(); registerMBean(); unregisterMBean;
After a various number of cycles in the range [1-200], one or several thread die with an InstanceNotFoundException at unregister time.
Less often, you may observe an InstanceAlreadyExistsException at register time.
Stacks:
java.util.concurrent.ExecutionException: javax.management.InstanceNotFoundException: sqe:type=Basic,creatorID=7
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:223)
at java.util.concurrent.FutureTask.get(FutureTask.java:84)
at Defect.run(Defect.java:59)
at Defect.main(Defect.java:25)
Caused by: javax.management.InstanceNotFoundException: sqe:type=Basic,creatorID=7
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1075)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.exclusiveUnregisterMBean(DefaultMBeanServerInterceptor.java:415)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.unregisterMBean(DefaultMBeanServerInterceptor.java:403)
at com.sun.jmx.mbeanserver.JmxMBeanServer.unregisterMBean(JmxMBeanServer.java:503)
at Defect$MXBeanCreator.call(Defect.java:130)
at Defect$MXBeanCreator.call(Defect.java:97)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:139)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)
java.util.concurrent.ExecutionException: javax.management.InstanceAlreadyExistsException: sqe:type=Basic,creatorID=7
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:223)
at java.util.concurrent.FutureTask.get(FutureTask.java:84)
at Defect.run(Defect.java:59)
at Defect.main(Defect.java:25)
Caused by: javax.management.InstanceAlreadyExistsException: sqe:type=Basic,creatorID=7
at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:453)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.internal_addObject(DefaultMBeanServerInterceptor.java:1465)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:944)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:898)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312)
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:479)
at Defect$MXBeanCreator.call(Defect.java:127)
at Defect$MXBeanCreator.call(Defect.java:97)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:139)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:669)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:694)
at java.lang.Thread.run(Thread.java:611)