Hi Martin,
Thanks very much for letting us know about this. I think you're right
about there being a thread-safety issue.
SimpleLog is definitely in use, but obviously this bug will only be
triggered under pretty rare conditions, and I expect would usually just
result in a malformed date string which may not be noticed anyway.
But it should be fixed; I'll try to do that this weekend.
Regards,
Simon
Fri, 2006-10-06 at 17:15 +0100, Martin Wilson wrote:
Hi,
I'm not sure if anyone else uses the SimpleLog class - anyway I've
noticed that SimpleLog.log is not thread-safe. The following code
(starting on line 282):
if(showDateTime) {
buf.append(dateFormatter.format(new Date()));
buf.append(" ");
}
makes an unsynchronized call to dateFormatter.format. As dateFormatter
is an instance variable, and DateFormat.format is not thread-safe, this
will cause problems if more than one thread tried to log at the same
time.
Solution: remove the dateFormatter instance variable and instantiate a
new DateFormat each time in the log method, e.g.
DateFormat dateFormatter = null;
try {
dateFormatter = new
SimpleDateFormat(dateTimeFormat);
}
catch(IllegalArgumentException e) {
dateFormatter = new
SimpleDateFormat(DEFAULT_DATE_TIME_FRMAT);
}
Is anyone available who could make this change?
Thanks,
Martin
Martin Wilson
martinw (AT) bright-interactive (DOT) com
Bright Interactive: successfully delivering interactive websites and
business applications
<
0870 240 6520
To unsubscribe, e-mail: commons-dev-unsubscribe (AT) jakarta (DOT) apache.org
For additional commands, e-mail: commons-dev-help (AT) jakarta (DOT) apache.org