Hi all,

We are using IPlanet 6.1 web server, that is based on Catalina 4.1
container. Recently we've run into strange exceptions on Catalina level.
After examining stack trace and relevant code, I see that the problem
originates in non-synchronized usage of static SimpleDateFormat variables
from DateTool class by CookieTools.getCookieHeaderValue() function.
According to JDK documentation, "Date formats are not synchronized. It is
recommended to create separate format instances for each thread. If multiple
threads access a format concurrently, it must be synchronized externally."

Sample stack trace:

java.lang.ArrayIndexOutOfBoundsException: 466
        at
sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:436)
        at
java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2081)
        at
java.util.GregorianCalendar.computeFields(GregorianCalendar.java:1996)
        at java.util.Calendar.setTimeInMillis(Calendar.java:1066)
        at java.util.Calendar.setTime(Calendar.java:1032)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:785)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:778)
        at
org.apache.catalina.util.CookieTools.getCookieHeaderValue(CookieTools.java:150)
        at
org.apache.catalina.util.CookieTools.getCookieHeaderValue(CookieTools.java:100)
        at
com.iplanet.ias.web.connector.nsapi.NSAPIResponse.sendHeaders(NSAPIResponse.java:492)
        at
org.apache.catalina.connector.HttpResponseBase.finishResponse(HttpResponseBase.java:251)
        at
com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProcessor.java:180)
        at com.iplanet.ias.web.WebContainer.service(WebContainer.java:580)

Can somebody (please) confirm that there is a bug in Catalina code?

Links to relevant classes for your convenience:

*
http://svn.apache.org/repos/asf/tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/util/DateTool.java
*
http://svn.apache.org/repos/asf/tomcat/container/branches/tc4.1.x/catalina/src/share/org/apache/catalina/util/CookieTools.java(look
for DateTool usage)

Thanks,
    Anton.

Reply via email to