McastServiceImpl does not close its socket in stop() as it claims. It merely calls leaveGroup(), which is sufficient to stop receiving messages, but does not close the socket. This causes a file descriptor leak each time the service is stopped. add; socket.close(); after leaveGroup();
btw, since it unreferences the socket without closing it, the next start() makes a new socket anyway. I've hacked around this by using reflection to grab the reference to the multicast socket object before calling stop, then calling stop, then closing the socket myself.
Fix suggested for back port into 6.0 branch
Fixed in 6.0.x branch, will be included in 6.0.17 and forward
Also applied to TC 5.5 as r790337. Will be part of 5.5.28.