I know the Query map is not synchronized, and perhaps it could be the cause of your problems. I guess you can get problems if new queries are being put while you simultaneously have many accesses, especially if a rehash is needed. If you can repeat your error, then why don't you just change Query to use a Collections.synchronizedMap... around the HashMap and see if the problem goes away? If so, then as optimization you can try using one of the concurrent hashmaps from the EDU.oswego.cs.dl.util.concurrent package which should give you better throughput. Please let us know how things turn out!
By the way, I know of at least a couple of other places where HashMaps are used in an "optimistic" but probably not thread-safe way. One in ValueStack and one in BeanUtil and they are "protected" by some clone code, but I believe that fails in the same way as double checked locking. Then there 2 more maps in BeanUtil I think that are not protected at all. The maps store class information and property editors so they are typically only written to during the first accesses, but if you have a very high load immediately you could probably get some problems with those as well. Best regards, Dick Zetterberg [EMAIL PROTECTED] ----- Original Message ----- From: pavel4u To: [EMAIL PROTECTED] Sent: Tuesday, October 21, 2003 3:13 PM Subject: [OS-webwork] WW13: Problem with hanging threads Hi We are busy finishing our project which uses WW1.3. Unfortunately we are having follwing problem when doing stress/load testing. This may point to a thread safe issue... our BEA app server (8.1sp1) warns us after some stress testing with following messages (there are more but I think these two show the problem enough): and when we make a dump the mentioned threads hang at the exact same points in webwork: "ExecuteThread: '15' for queue: 'weblogic.kernel.Default'" daemon prio=5 tid=0xd1f1a8 nid=0x2e runnable [cc280000..cc281994] at java.util.HashMap.get(HashMap.java:316) at webwork.util.Query.getQuery(Query.java:29) at webwork.util.ValueStack.findValue(ValueStack.java:323) at webwork.view.taglib.WebWorkBodyTagSupport.findValue(WebWorkBodyTagSupport.ja va:57) at webwork.view.taglib.ui.ComponentTag.doEndTag(ComponentTag.java:152) at webwork.view.taglib.ui.table.WebTable.doEndTag(WebTable.java:661) at jsp_servlet._account.__bookings._jspService(__bookings.java:2852) at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(Servle tStubImpl.java:1053) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java :387) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) ... at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) "ExecuteThread: '22' for queue: 'weblogic.kernel.Default'" daemon prio=5 tid=0xa9ec18 nid=0x35 runnable [cbb80000..cbb81994] at java.util.HashMap.get(HashMap.java:316) at webwork.util.Query.getQuery(Query.java:29) at webwork.util.ValueStack.findValue(ValueStack.java:323) at webwork.view.taglib.WebWorkBodyTagSupport.findValue(WebWorkBodyTagSupport.ja va:57) at webwork.view.taglib.ui.ComponentTag.doEndTag(ComponentTag.java:152) at webwork.view.taglib.ui.table.WebTable.doEndTag(WebTable.java:661) at jsp_servlet._account.__accountoverview._jspService(__accountoverview.java:97 3) at weblogic.servlet.jsp.JspBase.service(JspBase.java:33) at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(Servle tStubImpl.java:1053) at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java :387) at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28) at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27) ... at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170) We have had a look at the code and found that using a not synchronized access to the static HashMap in the webwork.util.Query object could leed to these problems. What do you think? Any help on this matter is really appreciated! Cheers and TIA -Paolo ------------------------------------------------------- This SF.net email is sponsored by OSDN developer relations Here's your chance to show off your extensive product knowledge We want to know what you know. Tell us and you have a chance to win $100 http://www.zoomerang.com/survey.zgi?HRPT1X3RYQNC5V4MLNSV3E54 _______________________________________________ Opensymphony-webwork mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork