Hi, We are getting an intermittent NullPointerException in Tapestry 5.0.5. We are running on Java 1.5. It seems that the RequestGlobals has a null Request when the call to getCookies is made (or that RequestGlobals is null). We cannot get the error to occur every time so testing is tricky, sometimes it occurs on the first request after the webapp starts with subsequent requests good for a few minutes before it occurs again. Other times it starts fine and pressing F5 100 times might make it occur.
Our thought at the moment is that a ThreadLocal bug ( http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6550283 ) might be causing the RequestGlobals to initially be correctly initialised and stored in ThreadLocal but later on with more items being added this bug means further down the track, a new RequestGlobals is added with null values. Anyone have any experience with this error or ideas on how to fix/work around it? Here is the stacktrace: java.lang.NullPointerException at org.apache.tapestry.internal.services.InternalModule$2.getCookies( InternalModule.java:294) at $CookieSource_114a4a153ae.getCookies($CookieSource_114a4a153ae.java) at org.apache.tapestry.internal.services.CookiesImpl.readCookieValue( CookiesImpl.java:53) at $Cookies_114a4a153ad.readCookieValue($Cookies_114a4a153ad.java) at org.apache.tapestry.services.PersistentLocaleImpl.getCookieValue( PersistentLocaleImpl.java:46) at org.apache.tapestry.services.PersistentLocaleImpl.get( PersistentLocaleImpl.java:40) at $PersistentLocale_114a4a153ac.get($PersistentLocale_114a4a153ac.java) at org.apache.tapestry.internal.services.LocalizationSetterImpl.setThreadLocale (LocalizationSetterImpl.java:98) at $LocalizationSetter_114a4a153a5.setThreadLocale($LocalizationSetter_114a4a153a5.java) at org.apache.tapestry.internal.services.LocalizationFilter.service( LocalizationFilter.java:41) at $RequestHandler_114a4a153ab.service($RequestHandler_114a4a153ab.java) at org.apache.tapestry.services.TapestryModule$2.service( TapestryModule.java:657) at $RequestHandler_114a4a153ab.service($RequestHandler_114a4a153ab.java) at org.apache.tapestry.internal.services.StaticFilesFilter.service( StaticFilesFilter.java:63) at $RequestHandler_114a4a153ab.service($RequestHandler_114a4a153ab.java) at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke( CheckForUpdatesFilter.java:97) at org.apache.tapestry.internal.services.CheckForUpdatesFilter$2.invoke( CheckForUpdatesFilter.java:88) at org.apache.tapestry.ioc.internal.util.ConcurrentBarrier.withRead( ConcurrentBarrier.java:77) at org.apache.tapestry.internal.services.CheckForUpdatesFilter.service( CheckForUpdatesFilter.java:110) at $RequestHandler_114a4a153ab.service($RequestHandler_114a4a153ab.java) at $RequestHandler_114a4a1539f.service($RequestHandler_114a4a1539f.java) at org.apache.tapestry.services.TapestryModule$11.service( TapestryModule.java:1044) at org.apache.tapestry.upload.services.MultipartServletRequestFilter.service( MultipartServletRequestFilter.java:42) at $HttpServletRequestHandler_114a4a153a0.service($HttpServletRequestHandler_114a4a153a0.java) at $HttpServletRequestHandler_114a4a1539d.service($HttpServletRequestHandler_114a4a1539d.java) at org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:135) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:206) at org.adscale.client.http.filter.AdvisedHibernateSessionInterceptor.doFilter( AdvisedHibernateSessionInterceptor.java:49) at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection( AopUtils.java:304) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint (ReflectiveMethodInvocation.java:172) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:139) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke( TransactionInterceptor.java:107) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( ReflectiveMethodInvocation.java:161) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke( JdkDynamicAopProxy.java:204) at $Proxy34.doFilter(Unknown Source) at org.adscale.client.http.filter.HibernateSessionInterceptor.doFilter( HibernateSessionInterceptor.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:175) at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:433) at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java :844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process( Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java :447) at java.lang.Thread.run(Thread.java:613) -- Jason Lea