From c61c0fc1d0aac94ccad531ad6841e3c99e02b90a Mon Sep 17 00:00:00 2001 From: Michal Cichra Date: Fri, 17 Mar 2017 12:46:57 +0100 Subject: [PATCH] [resolver] remove parallel dns query lets delegate this work to a dns resolver like dnsmasq it was broken and sometimes would return a string "killed" instead of table with answers that would count as valid answer --- CHANGELOG.md | 1 + apicast/src/resty/resolver/dns_client.lua | 34 +---------------------- 2 files changed, 2 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb50dcd80..f71860468 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Removed - Removed support for sending Request logs [PR #296](https://github.com/3scale/apicast/pull/296) +- Support for parallel DNS query [PR #311](https://github.com/3scale/apicast/pull/311) ### Known Issues diff --git a/apicast/src/resty/resolver/dns_client.lua b/apicast/src/resty/resolver/dns_client.lua index dca7a964a..68e5fc81f 100644 --- a/apicast/src/resty/resolver/dns_client.lua +++ b/apicast/src/resty/resolver/dns_client.lua @@ -62,37 +62,6 @@ local function query(resolver, qname, opts, nameserver) return resolver:query(qname, opts) end -local function parallel_query(resolvers, qname, opts) - local threads = {} - local n = #resolvers - - if n < 1 then - return nil, 'no resolvers' - end - - for i=1, n do - insert(threads, th_spawn(query, resolvers[i].resolver, qname, opts, resolvers[i].nameserver)) - end - - local answers, err - - do - local found, ok - local i=1 - repeat - ok, answers, err = th_wait(unpack(threads)) - i = i + 1 - found = ok and answers and not answers.errcode and not err - until found or i > n - end - - for i=1, n do - th_kill(threads[i]) - end - - return answers, err -end - local function serial_query(resolvers, qname, opts) local answers, err @@ -114,8 +83,7 @@ function _M.query(self, qname, opts) resolvers = self:init_resolvers() end - -- this is here so you can try the other one when suspicous something is wrong - return (parallel_query or serial_query)(resolvers, qname, opts) + return serial_query(resolvers, qname, opts) end return _M