[jira] Commented: (GERONIMO-2204) ProxyMethodInterceptor doesn't handle finalize appropriately
[ http://issues.apache.org/jira/browse/GERONIMO-2204?page=comments#action_12431271 ] David Jencks commented on GERONIMO-2204: Additional comment from duplicate report in GERONIMO-2356: Unlike the Sun JVM's the current version of the IBM JDK 1.5 does not silently ignore exceptions in finalizers. Due to this, when launching Geronimo in Debug mode using the Geronimo Eclipse plugin, the debugger prematurely breaks at this exception during server startup. Placing a try/catch/println/threaddump in the o.a.g.Kernel.ProxyMethodInterceptor.intercept method provides the following information... During startup the exception is usually thrown right at startup and at least one additonal or more times near end of server startup. No implementation method: objectName=geronimo/tomcat/1.1.1-SNAPSHOT/car?ServiceModule=geronimo/tomcat/1.1.1-SNAPSHOT/car,j2eeType=GBean,name=TomcatAJPConnector, method=protected void java.lang.Object.finalize() throws java.lang.Throwable ProxyMethodInterceptor doesn't handle finalize appropriately Key: GERONIMO-2204 URL: http://issues.apache.org/jira/browse/GERONIMO-2204 Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: kernel Affects Versions: 1.1 Reporter: David Jencks Assigned To: David Jencks Priority: Minor Fix For: 1.2, 1.1.x A user noticed that while debugging in eclipse (or idea with break-on-exceptions turned on) this method from ProxyMethodInterceptor throws UnsupportedOperationException when finalize is called on a proxy object: public final Object intercept(final Object object, final Method method, final Object[] args, final MethodProxy proxy) throws Throwable { ProxyInvoker gbeanInvoker; int interfaceIndex = proxy.getSuperIndex(); synchronized (this) { if (gbeanInvokers == null) { throw new DeadProxyException(Proxy is no longer valid); } gbeanInvoker = gbeanInvokers[interfaceIndex]; } if (gbeanInvoker == null) { throw new UnsupportedOperationException(No implementation method: objectName= + abstractName + , method= + method); } return gbeanInvoker.invoke(abstractName, args); } This appears to be harmless since the proxy doesn't implement finalize, but annoying. We could fix this by explicitly ignoring the finalize method in the code above, possibly by installing a suitable FinalizeInvoker, or by using a CallbackFilter with a Noop or SerizializableNoop callback (the strategy used by spring aop). Is this worth fixing? Which way would be best? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] Commented: (GERONIMO-2204) ProxyMethodInterceptor doesn't handle finalize appropriately
[ http://issues.apache.org/jira/browse/GERONIMO-2204?page=comments#action_12425074 ] Kevan Miller commented on GERONIMO-2204: I've reverted the original fix (RC 425160). The change was causing OutOfMemoryErrors during deployment of apps. This change roughly double the number of classes created by G on startup. I could only deploy/undeploy DayTrader once. After reverting the change, I've run well over 100 deploy/undeploy cycles. We're leaking two instances of 'EDU.oswego.cs.dl.util.concurrent.LinkedNode' per deploy/undeploy, but that's only 32 bytes... ProxyMethodInterceptor doesn't handle finalize appropriately Key: GERONIMO-2204 URL: http://issues.apache.org/jira/browse/GERONIMO-2204 Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: kernel Affects Versions: 1.1 Reporter: David Jencks Assigned To: David Jencks Priority: Minor Fix For: 1.1.1, 1.2 A user noticed that while debugging in eclipse (or idea with break-on-exceptions turned on) this method from ProxyMethodInterceptor throws UnsupportedOperationException when finalize is called on a proxy object: public final Object intercept(final Object object, final Method method, final Object[] args, final MethodProxy proxy) throws Throwable { ProxyInvoker gbeanInvoker; int interfaceIndex = proxy.getSuperIndex(); synchronized (this) { if (gbeanInvokers == null) { throw new DeadProxyException(Proxy is no longer valid); } gbeanInvoker = gbeanInvokers[interfaceIndex]; } if (gbeanInvoker == null) { throw new UnsupportedOperationException(No implementation method: objectName= + abstractName + , method= + method); } return gbeanInvoker.invoke(abstractName, args); } This appears to be harmless since the proxy doesn't implement finalize, but annoying. We could fix this by explicitly ignoring the finalize method in the code above, possibly by installing a suitable FinalizeInvoker, or by using a CallbackFilter with a Noop or SerizializableNoop callback (the strategy used by spring aop). Is this worth fixing? Which way would be best? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] Commented: (GERONIMO-2204) ProxyMethodInterceptor doesn't handle finalize appropriately
[ http://issues.apache.org/jira/browse/GERONIMO-2204?page=comments#action_12422323 ] Matt Hogstrom commented on GERONIMO-2204: - I think its worth fixing given that it pops up frequently and doesn't help developers. Serializable Noop sounds workable. ProxyMethodInterceptor doesn't handle finalize appropriately Key: GERONIMO-2204 URL: http://issues.apache.org/jira/browse/GERONIMO-2204 Project: Geronimo Issue Type: Bug Security Level: public(Regular issues) Components: kernel Affects Versions: 1.1 Reporter: David Jencks Assigned To: Dain Sundstrom Priority: Minor A user noticed that while debugging in eclipse (or idea with break-on-exceptions turned on) this method from ProxyMethodInterceptor throws UnsupportedOperationException when finalize is called on a proxy object: public final Object intercept(final Object object, final Method method, final Object[] args, final MethodProxy proxy) throws Throwable { ProxyInvoker gbeanInvoker; int interfaceIndex = proxy.getSuperIndex(); synchronized (this) { if (gbeanInvokers == null) { throw new DeadProxyException(Proxy is no longer valid); } gbeanInvoker = gbeanInvokers[interfaceIndex]; } if (gbeanInvoker == null) { throw new UnsupportedOperationException(No implementation method: objectName= + abstractName + , method= + method); } return gbeanInvoker.invoke(abstractName, args); } This appears to be harmless since the proxy doesn't implement finalize, but annoying. We could fix this by explicitly ignoring the finalize method in the code above, possibly by installing a suitable FinalizeInvoker, or by using a CallbackFilter with a Noop or SerizializableNoop callback (the strategy used by spring aop). Is this worth fixing? Which way would be best? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira