From: Louis M. <lo...@ma...> - 2010-12-23 17:58:14
|
Hi, I'm working on a project with a time- and reliability-sensitive ENUM resolution requirement. I'm already using dnsjava for this with good effect (thanks), using an ExtendedResolver with a set of DNS servers (they happen to be authoritative for the queries I send) which I specifically define - i.e. I'm not using the system default resolvers. I'll typically have exactly two servers, but certainly always more than one. I'm currently using dnsjava-2.0.8. If both servers are responding, all is fine. However if one server is not responding (unreachable), then I can currently choose between: 1. with load balancing disabled, either my application is not affected since it always asks the working server, or every query is delayed by the timeout period, before the remaining server is queried and we proceed; 2. with load balancing enabled, every second query is slowed down by the timeout; For even a low timeout setting, neither situation is workable in my project - I'd rather have the unresponsive server be excluded from queries than hold up processing continually. My first question then: is there already a recommended solution to this? I checked some of the listed applications that make use of dnsjava and didn't spot any of them taking steps to avoid the above. On the assumption that an existing solution is not available, I am preparing to implement a replacement for ExtendedResolver that tracks the RTT on each SimpleResolver in its set and uses this to select the fastest SimpleResolver (and consider an unresponsive server "very slow"). I'm taking this approach to avoid having to modify dnsjava itself so that I do not need to maintain a fork of dnsjava with my project. I'd be interested in any comments or suggestions regarding the above. Regards, -- Louis Mandelstam # man 8 consulting_ |