You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by jason lea <ja...@kumachan.net.nz> on 2007/08/27 05:02:48 UTC

T5 Intermittent NPE

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