При отправке почты через javamail открывается сокет к серверу smtp.Теперь мы получили случай, когда соединение почтового сервера оборвалось, когда соединение было еще живым, а javamail ожидал сервера (сканирование спама заняло несколько секунд).Поэтому TCP-соединение никогда не было закрыто, а клиент заблокирован.
Поэтому мы решили использовать тайм-ауты javamails, которые работают - клиент выдает исключение по истечении указанного времени.Однако tcp-соединение НЕ закрыто правильно (netstat -np по-прежнему показывает соединение как «ESTABLISHED»).Только после того, как я вызову System.gc (), сокет закрывается.
Это проблема, потому что gc () гарантируется до того, как будет сгенерировано любое исключение OOM, но не до того, как будет достигнут предел FD...
Можно ли это как-то обойти или это ошибка в javamail?
Затрагиваемая система: Linux (debian lenny), Sun JDK 1.6.0.20 (с -XXUseSSE = 3), javamail1.4.3