gotcha. that makes sense. i think most of the DateUtil
stuff was like
back in the 2.x code so i'm not sure that this is anything
new, but you
are certainly correct that this is a bit of a problem.
it looks like we can fix a lot of this just by cleaning up
the DateUtil
class alone and making sure that it is acting in a thread
safe manner by
not sharing instances and synchronizing where needed.
want to create a Jira issue for this so we can track it?
-- Allen
Anil Gangolli wrote:
>
> Allen:
>
> I didn't list them individually because there are a
bunch. Here are
> some techniques I'd use to track them down.
>
> A lot of them originate in DateUtil, where the format
is defined as a
> single instance. DateUtil.format() itself does
synchronize, but callers
> of DateUtil can get references to the formats back and
apply them
> themselves.
>
> For example, look for callers of
DateUtil.get8charDateFormat(); consider
> them all suspect, at least worth a check. Most of
these callers get the
> reference to the format and go on to call format()
without synchronizing.
>
> Another thing to look for is member fields of type
SimpleDateFormat that
> are in objects that are potentially shared across
threads, for example,
> HibernateWeblogManagerImpl which has a
"formatter" field originally
> defined to point to DateUtil.get8charDateFormat(), but
which gets shared
> quite heavily.
>
> In some cases these member fields are in objects like
RollerRequest that
> are generally instantiated once per thread so it seems
safe at first,
> but when you look closely, the member reference
actually goes back to a
> shared static instance in DateUtil, so you end up with
multi-threaded
> access to it.
>
> I wanted to kind of put a heads up out so that we would
be careful not
> to continue to increase the number of these things. I
will try to start
> going through and helping to fix them. The bugs that
they cause tend to
> have very hard-to-reproduce mysterious behaviors.
>
> --a.
>
>
> ----- Original Message ----- From: "Allen
Gilliland"
> <allen.gilliland sun.com>
> To: <roller-dev incubator.apache.org>
> Sent: Wednesday, August 23, 2006 9:51 AM
> Subject: Re: SimpleDateFromat usage in Roller 3.0
>
>
>> Anil,
>>
>> can you list the places where this is happening?
the overwhelming
>> majority of the work for 3.0 happened in the
ui.rendering package and
>> a quick glance at the use of SimpleDateFormat in
those classes looks
>> okay to me.
>>
>> i agree that we should try and find places where we
are not including
>> a locale in the use of SimpleDateFormat and fix
that.
>>
>> -- Allen
>>
>>
>> Anil Gangolli wrote:
>>> I'm seeing a couple of things related to
SimpleDateFormat usage in
>>> the Roller 3.0 codebase:
>>>
>>> (1) There are a number of places where
SimpleDateFormat is used in
>>> the Roller 3.0 codebase where the instance is
shared but there is no
>>> synchronization being done. These things are
not MT-safe.
>>>
>>> (2) Most construction of the formats use
locales, but there are a
>>> number of places where SimpleDateFormat is
constructed without a
>>> locale. Not sure if these are issues; I think
some are, and some
>>> aren't. --a.
>>>
>>
>
|