Description:
|
If resin wants to invoke an Alarm, in the class of CoordinatorTask, it will extract an object of Alarm and invoke "ThreadPool.getThreadPool().startPriority(alarm)".(line 654 in Alarm.java). Then look at the file of ThreadPool.java, the method of "startPriority" will invoke the method of "schdule" of which the last paramter is false, which means that if _idleHead is NULL, the method of "schedule" returns, and this alarm will not be added to the queue so that the alarm will not be handler forever. There is a big chance that some alarms such as ConnectionPool will not be handled forever in this situation. Many database connections will not be released. This brings a greate damage to our system. This problem still exists in version of 3.1.14 |