Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6328161

REGRESSION: Synchronization issue when register/unregister an MBean

XMLWordPrintable

    • b53
    • 6
    • 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)

            lmalvent Luis-Miguel Alventosa (Inactive)
            yjoan Yves Joan (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: