ClassCircularityError caused by proxy weaving
---------------------------------------------
Key: ARIES-690
URL: https://issues.apache.org/jira/browse/ARIES-690
Project: Aries
Issue Type: Bug
Affects Versions: 0.4
Reporter: Kevan Miller
Fix For: 0.4
I've run into a ClassCircularityError that's apparently caused by proxy weaving
code. I captured the stack trace via debugger:
{quote}
ejbd 1@1196 daemon, prio=5, in group 'main', status: 'RUNNING'
at
java.lang.ClassCircularityError.<init>(ClassCircularityError.java:32)
at java.lang.Class.getDeclaringClass(Class.java:-1)
at java.lang.Class.getEnclosingClass(Class.java:1085)
at
org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.readClass(AbstractWovenProxyAdapter.java:618)
at
org.apache.aries.proxy.impl.weaving.WovenProxyAdapter.visitEnd(WovenProxyAdapter.java:75)
at org.objectweb.asm.ClassAdapter.visitEnd(Unknown Source:-1)
at org.objectweb.asm.commons.SerialVersionUIDAdder.visitEnd(Unknown
Source:-1)
at
org.apache.aries.proxy.impl.weaving.SyntheticSerialVerUIDAdder.visitEnd(SyntheticSerialVerUIDAdder.java:35)
at org.objectweb.asm.ClassReader.accept(Unknown Source:-1)
at org.objectweb.asm.ClassReader.accept(Unknown Source:-1)
at
org.apache.aries.proxy.impl.weaving.WovenProxyGenerator.getWovenProxy(WovenProxyGenerator.java:52)
at
org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:63)
at
org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.call(WovenClassImpl.java:129)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHookPrivileged(ServiceRegistry.java:1239)
at
org.eclipse.osgi.internal.serviceregistry.ServiceRegistry.notifyHooksPrivileged(ServiceRegistry.java:1222)
at
org.eclipse.osgi.internal.baseadaptor.weaving.WovenClassImpl.callHooks(WovenClassImpl.java:154)
at
org.eclipse.osgi.internal.baseadaptor.weaving.WeavingHookConfigurator.processClass(WeavingHookConfigurator.java:68)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:596)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:567)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:490)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:478)
at
org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:458)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
at
org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:476)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at
org.apache.openjpa.util.Serialization.deserialize(Serialization.java:86)
at
org.apache.openjpa.jdbc.sql.DBDictionary.getBlobObject(DBDictionary.java:623)
at
org.apache.openjpa.jdbc.sql.ResultSetResult.getObjectInternal(ResultSetResult.java:402)
at
org.apache.openjpa.jdbc.sql.AbstractResult.getObject(AbstractResult.java:696)
at
org.apache.openjpa.jdbc.meta.strats.HandlerStrategies.loadDataStore(HandlerStrategies.java:222)
at
org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.load(HandlerFieldStrategy.java:187)
at
org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:928)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1123)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1067)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:438)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:333)
at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112)
at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1022)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:980)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:902)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1041)
at
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280)
at
org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2381)
at
org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274)
at
org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:305)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:319)
at
org.apache.openejb.core.cmp.jpa.JpaCmpEngine.executeSelectQuery(JpaCmpEngine.java:277)
at
org.apache.openejb.core.cmp.jpa.JpaCmpEngine.queryBeans(JpaCmpEngine.java:231)
at
org.apache.openejb.core.cmp.CmpContainer.findEJBObject(CmpContainer.java:669)
at
org.apache.openejb.core.cmp.CmpContainer.invoke(CmpContainer.java:261)
at
org.apache.openejb.core.cmp.CmpContainer.invoke(CmpContainer.java:230)
at
org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbHome_FIND(EjbRequestHandler.java:327)
at
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:152)
at
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196)
at
org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:149)
at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71)
at
org.apache.openejb.server.ejbd.KeepAliveServer$Session.service(KeepAliveServer.java:213)
at
org.apache.openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233)
at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66)
at org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91)
at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
{quote}
If I exclude 'org.apache.openjpa' from weaving (by adding a check in
ProxyWeavingHook), everything works fine...
I may commit this as a temporary work-around -- to help Geronimo testing.
However, this seems like a general proxy issue. So, I think we'll need to
understand the underlying issue...
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira