dev@glassfish.java.net

Re: FindBugs errors - MSF_MUTABLE_SERVLET_FIELD - false positive?

From: Oleksiy Stashok <oleksiy.stashok_at_oracle.com>
Date: Wed, 20 Apr 2011 15:03:57 +0200

On 04/20/2011 01:19 PM, Andreas Loew wrote:
> Am 20.04.2011 11:27, schrieb Oleksiy Stashok:
>>>> The description of MSF_MUTABLE_SERVLET_FIELD says:
>>>>
>>>> "A web server generally only creates one instance of servlet or jsp
>>>> class (i.e., treats the class as a Singleton), and will have
>>>> multiple threads invoke methods on that instance to service
>>>> multiple simultaneous requests. Thus, having a mutable instance
>>>> field generally creates race conditions."
>>>>
>>>> Would it be possible to make your field a *static* variable of your
>>>> Servlet class instead of an instance variable and thereby signal to
>>>> FindBugs that you take care of the fact that it will not create a
>>>> race condition?
>>>>
>>> No, the value is associated with an instance and computed from
>>> ServletConfig. I could have synchronized, But I feel its not
>>> warranted for this case.
>>
>> volatile might be enough.
>
> If marking the field as "volatile" indeed were sufficient to get rid
> of the FindBugs warning, that would be kind of absurd given the
> original reasoning for the warning (see above).
It was rather comment to "I could have synchronized" than the actual
findbugs error, which seems knows nothing about Servlet's init(...) method.

WBR,
Alexey.