List Info

Thread: SimpleDateFromat usage in Roller 3.0




SimpleDateFromat usage in Roller 3.0
user name
2006-08-24 15:15:02
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.gillilandsun.com>
> To: <roller-devincubator.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.
>>>
>>
> 
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )