On Jan 17, 2008, at 8:12 AM, Joerg Heinicke wrote:

On 17.01.2008 05:45, Harald Entner wrote:

In normal mode everything runs fine. But when running a jmeter test with 40 concurrent users, the AbstractWidgetDefinitionBuilder throws a NullPointerException. see the full stacktrace at (1)
java.lang.NullPointerException
at org .apache .cocoon .forms .formmodel .AbstractWidgetDefinitionBuilder .setupDefinition(AbstractWidgetDefinitionBuilder.java:109) (... see 1)
Probably the reason for this error is that the function
public WidgetDefinition buildWidgetDefinition(Element widgetElement, WidgetDefinitionBuilderContext context)
  throws Exception {
 it is not thread-save.
I tried the same test with a little modification (buildWidgetDefinition is synchronized) public synchronized WidgetDefinition buildWidgetDefinition(Element widgetElement, WidgetDefinitionBuilderContext context)
  throws Exception {
The error (1) doesn't occur anymore, but another one: (see 2) It seems that the cause for this is very similar to the one above. Has one of you seen this error when running a stress test? What could i do to avoid that problem? (i could go on and modify this function to synchronized as well, but hopefully there is a better solution for this. )

Hmm, this does not look good but like a major flaw in Cocoon Forms. Following the Javadoc of WidgetDefinitionBuilder implementations of this interface have to be thread-safe

Hmm, apparently intent does not match implementation.

- which they are not because of the context field. There is one quick fix you can do: Make the context a ThreadLocal variable.

It has been fixed in trunk in r604025, but I did not notice that javadoc snippet you pointed to.

Vadim

Reply via email to