Thursday, March 08, 2012

The Third Party Performance Problems

We live by the third parties, but do not expect them perfect...

We used a lot of third party stacks on each project, and they are almost used in the similar way most of time, so creating this lists to avoid such kind of traps in future, just give you some examples we met before:

1> HashMap.put() is not thread safe, however Axis manipulate it in parallel which leads to an infinite loop (it will cause 100% CPU usage unless restart the service)
Bug for tracking: https://issues.apache.org/jira/browse/AXIS-2792
Update:
a good post for explaining this problem in detail: http://coolshell.cn/articles/9606.html
here is an English version: http://mailinator.blogspot.com/2009/06/beautiful-race-condition.html
and how Doug Lea said about this in Sun's bug tracking system a few years ago: http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6423457

2> Jetty service no responding by Deadlock (The Jetty can not respond to any coming request ,you have to restart the service)
Bug for tracking: http://jira.codehaus.org/browse/JETTY-1264

3> A JDK regression results in an indefinite wait for a connection which is created by Jtds or other JDBC drivers, so do not upgrade JDK version 1.6.0_27+ (said to be fixed in _30)
Bug for tracking: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7105007

4> Jtds-1.2.2 has introduced a few performance issues , including memory leak and infinite loop issues, you may consider to upgrade it after checking the history release notes:
http://sourceforge.net/news/?group_id=33291

Feel free to add more findings ;)