CDV ❯ Any TIM with presentation factory (tim-ehache, tim-hibernate-cache) will fail under resin
-
Bug
-
Status: Closed
-
2 Major
-
Resolution: Fixed
-
-
-
nrana
-
Reporter: teck
-
October 21, 2009
-
0
-
Watchers: 1
-
January 19, 2010
-
December 16, 2009
Attachments
Description
This is for custom install only (not express). The stack trace is attached. The L1 startup throws ClassCircularityError and/or LinkageError (depending on jdk version) for com/caucho/jmx/MBeanServerBuilderImpl
One workaround is to disabled jmxremote in your resin.conf (remove and/or comment out
In the attached stack, re-entering java.lang.management.ManagementFactory.getPlatformMBeanServer() (marked with XXX) will end up trying to reload the same class again (marked with cycle)
Two possible solutions are to not trigger the L1 startup until the platform mbean server is created, or perhaps we can delay registering the beans for TIMByteProviders in com.tc.plugins.ModulesLoader.installTIMByteProvider (thus not needing to get the platform mbean server there)
Comments
Steve Harris 2009-10-21
Tim Eck 2009-10-21
This is something that Toronto Globe and Mail ran into
Tim Eck 2009-12-14
http://svn.terracotta.org/fisheye/changelog/Terracotta/?cs=14211 from trunk contains a quick fix for this issue
Nitin Rana 2009-12-22
Verified using resing server 3.1.9.
- added following values to resin.conf jvm-ard section
-Xbootclasspath/p:/Users/nrana/TC-Builds/terracotta-3.2.0-ee/lib/dso-boot/dso-boot-hotspot_osx_160_17.jar -Dtc.install-root=/Users/nrana/TC-Builds/terracotta-3.2.0-ee -Dtc.config=/Users/nrana/TC-Builds/terracotta-3.2.0-ee/bin/tc-config.xml - Written a simple web that just put the elements in to ehcache.
ehcache panel is visible in TDC and cache stats are getting updated.
TC version Terracotta Enterprise 3.2.0, as of 20091216-201202 (Revision 5578-14233 by cruise@su10mo5 from 3.2)
Li Ma 2010-01-18
This fixed works for 64bit JDK on Mac and Linux. But user tested on Windows and 32bot JDK, it still does not work.
Stack trace is below:
2010-01-15 18:15:28,625 INFO - Terracotta 3.2.0, as of 20091212-151202 (Revision 14206 by cruise@su10mo5 from 3.2)
2010-01-15 18:15:29,063 INFO - Configuration loaded from the server at ‘localhost:9510’.
2010-01-15 18:15:29,188 INFO - Log file: ‘C:\resin-pro-3.1.8\terracotta\client-logs\poc\standalone-clustered\20100115181529172\terracotta-client.log’.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.tc.object.bytecode.hook.impl.ClassProcessorHelper.createGlobalContext(ClassProcessorHelper.java:494)
at com.tc.object.bytecode.hook.impl.ClassProcessorHelper.initialize(ClassProcessorHelper.java:349)
at com.tc.object.bytecode.hook.impl.ClassProcessorHelper.defineClass0Pre(ClassProcessorHelper.java:533)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at sun.misc.Launcher$AppClassLoader.findClass(Launcher.java)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1281)
at com.caucho.loader.SystemClassLoader.loadClassImpl(SystemClassLoader.java:217)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1219)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1203)
at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423)
at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465)
at javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511)
at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174)
at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302)
at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)
at sun.management.jmxremote.ConnectorBootstrap.startLocalConnectorServer(ConnectorBootstrap.java:458)
at sun.management.Agent.startAgent(Agent.java:135)
at sun.management.Agent.startAgent(Agent.java:239)
Caused by: java.lang.ClassCircularityError: com/caucho/jmx/MBeanServerBuilderImpl
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1281)
at com.caucho.loader.SystemClassLoader.loadClassImpl(SystemClassLoader.java:217)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1219)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1203)
at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423)
at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465)
at javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511)
at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174)
at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302)
at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)
at com.tc.plugins.ModulesLoader.installTIMByteProvider(ModulesLoader.java:217)
at com.tc.plugins.ModulesLoader.access$200(ModulesLoader.java:75)
at com.tc.plugins.ModulesLoader$2.callback(ModulesLoader.java:202)
at com.tc.bundles.KnopflerfishOSGi.startBundle(KnopflerfishOSGi.java:100)
at com.tc.bundles.KnopflerfishOSGi.startBundles(KnopflerfishOSGi.java:73)
at com.tc.plugins.ModulesLoader.initModules(ModulesLoader.java:211)
at com.tc.plugins.ModulesLoader.initModules(ModulesLoader.java:128)
at com.tc.object.bytecode.hook.impl.DSOContextImpl.
Li Ma 2010-01-18
Another stack trace generated from 32bit Linux:
[12:31:58.484] {resin-destroy} WebApp[http://localhost:8090] stopping
2010-01-18 12:41:14,033 INFO - Terracotta 3.2.0, as of 20091212-151202 (Revision 14206 by cruise@su10mo5 from 3.2)
2010-01-18 12:41:15,239 INFO - Configuration loaded from the server at ‘localhost:9510’.
2010-01-18 12:41:15,546 INFO - Log file: ‘/opt/resin-3.1.8/terracotta/client-logs/mtservice/20100118124115510/terracotta-client.log’.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.tc.object.bytecode.hook.impl.ClassProcessorHelper.createGlobalContext(ClassProcessorHelper.java:494)
at com.tc.object.bytecode.hook.impl.ClassProcessorHelper.initialize(ClassProcessorHelper.java:349)
at com.tc.object.bytecode.hook.impl.ClassProcessorHelper.defineClass0Pre(ClassProcessorHelper.java:533)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at sun.misc.Launcher$AppClassLoader.findClass(Launcher.java)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1281)
at com.caucho.loader.SystemClassLoader.loadClassImpl(SystemClassLoader.java:217)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1219)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1203)
at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423)
at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465)
at javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511)
at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174)
at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302)
at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)
at sun.management.jmxremote.ConnectorBootstrap.startLocalConnectorServer(ConnectorBootstrap.java:458)
at sun.management.Agent.startAgent(Agent.java:135)
at sun.management.Agent.startAgent(Agent.java:239)
Caused by: java.lang.ClassCircularityError: com/caucho/jmx/MBeanServerBuilderImpl
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1281)
at com.caucho.loader.SystemClassLoader.loadClassImpl(SystemClassLoader.java:217)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1219)
at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1203)
at javax.management.MBeanServerFactory.loadBuilderClass(MBeanServerFactory.java:423)
at javax.management.MBeanServerFactory.checkMBeanServerBuilder(MBeanServerFactory.java:465)
at javax.management.MBeanServerFactory.getNewMBeanServerBuilder(MBeanServerFactory.java:511)
at javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:298)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:213)
at javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:174)
at sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302)
at java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:504)
at com.tc.plugins.ModulesLoader.installTIMByteProvider(ModulesLoader.java:217)
at com.tc.plugins.ModulesLoader.access$200(ModulesLoader.java:75)
at com.tc.plugins.ModulesLoader$2.callback(ModulesLoader.java:202)
at com.tc.bundles.KnopflerfishOSGi.startBundle(KnopflerfishOSGi.java:100)
at com.tc.bundles.KnopflerfishOSGi.startBundles(KnopflerfishOSGi.java:73)
at com.tc.plugins.ModulesLoader.initModules(ModulesLoader.java:211)
at com.tc.plugins.ModulesLoader.initModules(ModulesLoader.java:128)
at com.tc.object.bytecode.hook.impl.DSOContextImpl.
Tim Eck 2010-01-18
Please make sure the boot jar in use here is indeed built with 3.2.0. thx
Fiona OShea 2010-01-19
From Nitin Rana I verified earlier on linux using 64-bit JVM. I have again verified the same today using the 32-bit on windows-xp using terracotta 3.2.0. It is working fine for me.
I am using my own ehcache app that just put the elements into cache with key range 0-999. The app is working fine.
Is this for a customer?