Problem: email thread is hanging at socket read
Today we found a email problem in production, all of the mail threads (3 threads) are hanging/sitting/blocking at same point
I search the "javax.mail.Transport.send" and "com.sun.mail.smtp.SMTPTransport.readServerResponse", got no hits.
while my colleague get answer from internet.
http://jira.sakaiproject.org/browse/KNL-96
http://forums.sun.com/thread.jspa?forumID=43&threadID=474662
"I have a servlet which uses JavaMail to send out emails to a smtp server. During our peak access hours, we have many requests to send out emails, after a while my application went into CLOSE WAIT accumulation and finally my application server stops processing."
Solution
"JavaMail send() method is synchronous call. If the smtp server does not return a response JavaMail may wait forever.
Therefore you should set the smtp timeout properties:
mail.smtp.connectiontimeout
mail.smtp.timeout"
My postmortem
1. try different search keywords in problem description : blocking, handing, never return. setting...
2. try different API:"javax.mail.Transport.send
"javax.mail.Transport.send" is abstract API.
"com.sun.mail.smtp.SMTPTransport.readServerResponse" is bottom.
Try a middle point: com.sun.mail.smtp.SMTPTransport.connect
3.We do not get the root cause: why 'CLOSE_WAIT ' accumulation.
It means one peer of socket connection is closed, while the other do not.