Hi,

I'm afraid I can't guarantee that your PermGen won't have risen at all, after 
all there is a lot more code than the proxy! We do now have at most one 
Interface Proxy ClassLoader per bundle (rather than up to one ClassLoader per 
interface proxy class) which should be a substantial saving.

As for the logged exceptions, they don't indicate an error per se, but are 
useful for debug. Would it be good enough to make them trace level output?

Regards,

Tim

----------------------------------------
> Subject: Re: broken build?
> From: [email protected]
> Date: Wed, 8 Jun 2011 18:30:29 -0700
> To: [email protected]
>
>
> On Jun 8, 2011, at 3:54 AM, Timothy Ward wrote:
>
> >
> > Hi,
> >
> > This failure (and a couple of others which I fixed last night) was caused 
> > by a small code shift in the recent proxy activity. I have adjusted our JSR 
> > inlining so that this test passes, and that it shouldn't be possible to get 
> > this wrong again in future.
> >
> > See commit 1133335 for the fix. Sorry for the inconvenience.
>
> thanks for fixing this!
> >
> > We should now have all of the original function restored to ARIES-669, and 
> > have eliminated a decent chunk of the extra PermGen usage you were seeing 
> > in Geronimo in ARIES-671.
>
> I have a small bit of evidence that the permgen usage is still quite a bit 
> larger than it used to be, but this requires more investigation.
> >
> > We have a remaining action to make WovenProxy synthetic. Is there anything 
> > more you're expecting?
>
> not yet :-)
>
> I notice when geronimo starts there are hundreds of logs like this:
>
> 2011-06-08 15:47:19,206 INFO [ProxyWeavingHook] The class 
> org.apache.felix.gogo.runtime.activator.Activator$1 cannot be woven, it may 
> not be possible for the runtime to proxy this class.
> java.lang.RuntimeException: The method modified in class 
> org.osgi.util.tracker.ServiceTracker cannot be called by 
> org.apache.felix.gogo.runtime.activator.Activator$1 because it is in a 
> different package.
> at 
> org.apache.aries.proxy.impl.weaving.MethodCopyingClassAdapter.visitMethod(MethodCopyingClassAdapter.java:108)
> at org.objectweb.asm.ClassReader.accept(Unknown Source)
> at org.objectweb.asm.ClassReader.accept(Unknown Source)
> at 
> org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.readClass(AbstractWovenProxyAdapter.java:631)
> at 
> org.apache.aries.proxy.impl.weaving.WovenProxyAdapter.visitEnd(WovenProxyAdapter.java:75)
> at org.objectweb.asm.ClassAdapter.visitEnd(Unknown Source)
> at org.objectweb.asm.commons.SerialVersionUIDAdder.visitEnd(Unknown Source)
> at 
> org.apache.aries.proxy.impl.weaving.SyntheticSerialVerUIDAdder.visitEnd(SyntheticSerialVerUIDAdder.java:35)
> at org.objectweb.asm.ClassReader.accept(Unknown Source)
> at org.objectweb.asm.ClassReader.accept(Unknown Source)
> at 
> org.apache.aries.proxy.impl.weaving.WovenProxyGenerator.getWovenProxy(WovenProxyGenerator.java:52)
> at 
> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:62)
> 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.karaf.shell.console.jline.Activator.(Activator.java:27)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> at java.lang.Class.newInstance0(Class.java:355)
> at java.lang.Class.newInstance(Class.java:308)
> at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:166)
> at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:679)
> at 
> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
> at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:389)
> at 
> org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1130)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
> at 
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at 
> org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
> Caused by: org.apache.aries.proxy.UnableToProxyException: 
> org.osgi.util.tracker.ServiceTracker
> ... 49 more
>
>
> and
>
> 2011-06-08 15:47:19,298 INFO [ProxyWeavingHook] The class 
> org.fusesource.jansi.AnsiConsole$1 cannot be woven, it may not be possible 
> for the runtime to proxy this class.
> java.lang.RuntimeException: org.apache.aries.proxy.UnableToProxyException: 
> The class org.fusesource.jansi.AnsiConsole$1 and its superclass 
> java.io.FilterOutputStream do not have no-args constructors and cannot be 
> woven.
> at 
> org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.writeCreateNewProxyInstanceAndConstructor(AbstractWovenProxyAdapter.java:488)
> at 
> org.apache.aries.proxy.impl.common.AbstractWovenProxyAdapter.visitEnd(AbstractWovenProxyAdapter.java:343)
> at 
> org.apache.aries.proxy.impl.weaving.WovenProxyAdapter.visitEnd(WovenProxyAdapter.java:83)
> at org.objectweb.asm.ClassAdapter.visitEnd(Unknown Source)
> at org.objectweb.asm.commons.SerialVersionUIDAdder.visitEnd(Unknown Source)
> at 
> org.apache.aries.proxy.impl.weaving.SyntheticSerialVerUIDAdder.visitEnd(SyntheticSerialVerUIDAdder.java:35)
> at org.objectweb.asm.ClassReader.accept(Unknown Source)
> at org.objectweb.asm.ClassReader.accept(Unknown Source)
> at 
> org.apache.aries.proxy.impl.weaving.WovenProxyGenerator.getWovenProxy(WovenProxyGenerator.java:52)
> at 
> org.apache.aries.proxy.impl.weaving.ProxyWeavingHook.weave(ProxyWeavingHook.java:62)
> 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.karaf.shell.console.jline.Activator.start(Activator.java:30)
> at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
> at java.security.AccessController.doPrivileged(Native Method)
> at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
> at 
> org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
> at 
> org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
> at 
> org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:389)
> at 
> org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1130)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
> at 
> org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
> at 
> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
> at 
> org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
> Caused by: org.apache.aries.proxy.UnableToProxyException: The class 
> org.fusesource.jansi.AnsiConsole$1 and its superclass 
> java.io.FilterOutputStream do not have no-args constructors and cannot be 
> woven.
> ... 43 more
>
>
> Is this level of detail appropriate? It looks to me like either we've done 
> something dreadfully wrong or there's way too much logging. Personally I 
> think expecting any non-interface class to be proxiable is a stretch.
>
> thanks
> david jencks
>
> >
> > Regards,
> >
> > Tim
> >
> > ----------------------------------------
> >> From: [email protected]
> >> Subject: broken build?
> >> Date: Tue, 7 Jun 2011 13:48:41 -0700
> >> To: [email protected]
> >>
> >> Today my aries build breaks with a test failure in 
> >> JPAWeavingAndAnnotationScanningTest. Does anyone else see this? Could it 
> >> be due to the proxy/weaving changes?
> >>
> >> thanks
> >> david jencks
> >>
> >
>
                                          

Reply via email to