On Thu, 31 May 2001, Jon Stevens wrote:
> on 5/31/01 10:11 AM, "Remy Maucherat" <[EMAIL PROTECTED]> wrote:
>
> > Sorry.
> >
> > The latest nightly (05/31) should have the fix. Does it work now ?
> >
> > Remy
>
> It works "better"...now, I have another strange case that is going on...
>
To help debug future cases on the class reloader, I just checked in a
change that will cause voluminous debugging output from the web app class
loader if you add an element in conf/server.xml:
<Context path="/scarab" ...>
<Loader debug="99"/>
</Context>
without having to modify and recompile Tomcat. This output will go to
standard out (by default, to "logs/catalina.out").
> I followed my directions from before. Then, I hit a page that causes Turbine
> to require a "valid" Session, which is one that existed before the
> classreloading happened. Needless to say, I have NEVER seen this error
> happen before or had anyone report it...
>
> But, I can't quite 100% prove yet that this is Tomcat and not Turbine that
> is having the problem so I will have to investigate further and come up with
> a definitive answer.
>
What's happening around line 453 of Turbine.java? You would legitimately
get this kind of a stack trace if you invalidate a session and then try to
call removeAttribute on it. The rest of the trace indicates that you're
just processing a request as usual (i.e. it's not the reloading machinery
or anything involved here).
> Also, when is the slowness bug going to be fixed that Jason van Zyl reported
> a while back? It is KILLING our development time. Speed wise, Tomcat 4 runs
> like a dog with only 1 leg.
>
Remy did some investigation of the hotspot that was reported, which is in
the constructor (this class extends java.net.URLConnection):
public DirContextURLConnection(DirContext context, URL url) {
super(url);
if (context == null)
throw new IllegalArgumentException
("Directory context can't be null");
this.permission = new FilePermission(url.toString(), "read");
this.context = context;
}
so the likely culprits are the superclass constructor, url.toString(), or
the FilePermission constructor. But it's definitely not obvious where the
problem is. Research continues.
> -jon
>
Craig
> java.lang.IllegalStateException: removeAttribute: Session already
> invalidated
> at
> org.apache.catalina.session.StandardSession.removeAttribute(StandardSession.
> java:932)
> at
> org.apache.catalina.session.StandardSessionFacade.removeAttribute(StandardSe
> ssionFacade.java:201)
> at
> org.apache.catalina.session.StandardSessionFacade.removeValue(StandardSessio
> nFacade.java:206)
> at org.apache.turbine.Turbine.doGet(Turbine.java:453)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:247)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:193)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:255)
> at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:225)
> at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
> at
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase
> .java:472)
> at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2252)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
> )
> at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
> at
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:446)
> at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 64)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :163)
> at
> org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
> 66)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
> at
> org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
> 875)
> at
> org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:952)
> at java.lang.Thread.run(Thread.java:496)
>
>
>