I sent this to user list a few days ago, and got no response. The dev list is probably a better place for it.
I also see I forgot to attach my patch, which I will do now. Ted Kirby ---------- Forwarded message ---------- From: Ted Kirby <[EMAIL PROTECTED]> Date: May 16, 2007 11:02 AM Subject: Problem with org.apache.coyote.Request ? To: [EMAIL PROTECTED] I see that setNote is used to cache objects in the Request object. I think these cached objects should be released in the recycle() method, but I do not see code in there to do so. I was tracing a problem I was having with a debugger on two different JVMs. I was looking at this traceback: at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:543) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) at java.lang.Thread.run(Thread.java:801) I was stopping in org.apache.catalina.connector.CoyoteAdapter.service, and my first time tthere, req.getNote(ADAPTER_NOTES) was not returning null a Sun 1.5 JVM. I also added code in the Request constructor to insure notes was an array of nulls, and that fixed this "problem". I have attached my fix. I think not clearing notes in recycle() is a problem. I was surprised I seemed to need the code in the constructor. It is possible that I did not catch a use of the request object before service(), but I had a stop in setNote(). It does not seem that setNote() is used very often, and I could not really see what is was doing. Ted Kirby
Index: java/org/apache/coyote/Request.java =================================================================== --- java/org/apache/coyote/Request.java (revision 538620) +++ java/org/apache/coyote/Request.java (working copy) @@ -74,7 +74,12 @@ parameters.setQuery(queryMB); parameters.setURLDecoder(urlDecoder); parameters.setHeaders(headers); - + + for (int i = 0; i < notes.length; i++) { + if (notes[i] != null) { + notes[i] = null; + } + } } @@ -511,6 +516,12 @@ remoteUser.recycle(); authType.recycle(); attributes.clear(); + + for (int i = 0; i < notes.length; i++) { + if (notes[i] != null) { + notes[i] = null; + } + } } // -------------------- Info --------------------
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]