Keith Boone created LANG-1355:
---------------------------------

             Summary: TimeZone.getTimeZone() in FastDateParser causes resource 
contention
                 Key: LANG-1355
                 URL: https://issues.apache.org/jira/browse/LANG-1355
             Project: Commons Lang
          Issue Type: Bug
          Components: lang.time.*
    Affects Versions: 3.6
         Environment: Windows
            Reporter: Keith Boone


Under heavy load we are seeing contention in FastDateParser.parse() on calls to 
TimeZone.getTimeZone().  TimeZone.getTimeZone() is a synchronized static in the 
Oracle JVM.

Our proposed solution is to add a class TimeZoneCache containing a single 
method getTimeZone() which gets the requested time zone from a ConcurrentMap, 
and if not present, looks it up via TimeZone.getTimeZone() and caches it before 
returning it.

Then replace calls to TimeZone.getTimeZone() in FastDateParser ( and whereever 
else) to calls to TimeZoneCache.getTimeZone().  

The reason to add a separate class is because it can also be used by other 
applications which heavily parse or format or do other things where TimeZone is 
repeatedly needed.

Under extreme load we have seen an 50:1 improvement in calls to 
FastDateParser.parse().  This saves about a ms/call in our test environment, 
and reduces contention.






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to