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

Reply via email to