DNS resolution fails after resolv.conf update
Stanislav Baiduzhyi
sbaiduzh at redhat.com
Tue May 5 11:32:56 UTC 2015
Hi Christos,
On Monday 04 May 2015 21:16:40 Christos Zoulas wrote:
> I don't think it is the job of the JDK to handle this. For example
> many systems (like NetBSD for example) work just fine without
> needing this, because their libc keeps track of resolv.conf changes.
Normally I would agree with you, but if the OS does not provide that
functionality for any reason we still have to provide working solution from
java perspective.
> On other systems, calling res_init() does not even work properly
> because the getaddrinfo() call uses the re-entrant API to be thread
> safe (res_ninit()/res_nsend() etc.).
>
> Additionally res_init() isn't even thread-safe (on most implementations),
> so multiple threads calling it at the same time can corrupt the
> resolver state.
>
> Fixing it the way you propose means that every application that
> does hostname/address resolution would need to be modified in order
> to work.
Good point. I see that some patches to glibc to handle this issue are using
lock mechanism, plus Bernd suggested to use a separate thread for this. I'll
try implementing both of those variants and will return with another webrev.
--
Regards,
Stas
More information about the net-dev
mailing list