aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-11-26 17:21:24 +0000
committerGravatar GitHub <noreply@github.com> 2017-11-26 17:21:24 +0000
commit9d52b5acb967e5d94e67cd205498c9c59c5ddcf6 (patch)
tree28a5d7a6c3840fecaca3f80106c8194990ca7cb4
parentf621870d9c522f73f641d8fed22b3e0911246f50 (diff)
downloadcoredns-9d52b5acb967e5d94e67cd205498c9c59c5ddcf6.tar.gz
coredns-9d52b5acb967e5d94e67cd205498c9c59c5ddcf6.tar.zst
coredns-9d52b5acb967e5d94e67cd205498c9c59c5ddcf6.zip
plugin/etcd: drop inflight (#1249)
Use caching, just ask etcd for every query. This also improves throughput because the single lock in inflght is bypassed.
-rw-r--r--plugin/etcd/etcd.go22
-rw-r--r--plugin/etcd/lookup_test.go2
-rw-r--r--plugin/etcd/setup.go2
3 files changed, 5 insertions, 21 deletions
diff --git a/plugin/etcd/etcd.go b/plugin/etcd/etcd.go
index 862be065b..adc8331f2 100644
--- a/plugin/etcd/etcd.go
+++ b/plugin/etcd/etcd.go
@@ -9,8 +9,6 @@ import (
"github.com/coredns/coredns/plugin"
"github.com/coredns/coredns/plugin/etcd/msg"
- "github.com/coredns/coredns/plugin/pkg/cache"
- "github.com/coredns/coredns/plugin/pkg/singleflight"
"github.com/coredns/coredns/plugin/proxy"
"github.com/coredns/coredns/request"
@@ -28,7 +26,6 @@ type Etcd struct {
Proxy proxy.Proxy // Proxy for looking up names during the resolution process
Client etcdc.KeysAPI
Ctx context.Context
- Inflight *singleflight.Group
Stubmap *map[string]proxy.Proxy // list of proxies for stub resolving.
endpoints []string // Stored here as well, to aid in testing.
@@ -84,24 +81,15 @@ func (e *Etcd) Records(state request.Request, exact bool) ([]msg.Service, error)
}
}
-// get is a wrapper for client.Get that uses SingleInflight to suppress multiple outstanding queries.
+// get is a wrapper for client.Get
func (e *Etcd) get(path string, recursive bool) (*etcdc.Response, error) {
-
- hash := cache.Hash([]byte(path))
-
- resp, err := e.Inflight.Do(hash, func() (interface{}, error) {
- ctx, cancel := context.WithTimeout(e.Ctx, etcdTimeout)
- defer cancel()
- r, e := e.Client.Get(ctx, path, &etcdc.GetOptions{Sort: false, Recursive: recursive})
- if e != nil {
- return nil, e
- }
- return r, e
- })
+ ctx, cancel := context.WithTimeout(e.Ctx, etcdTimeout)
+ defer cancel()
+ r, err := e.Client.Get(ctx, path, &etcdc.GetOptions{Sort: false, Recursive: recursive})
if err != nil {
return nil, err
}
- return resp.(*etcdc.Response), err
+ return r, nil
}
// skydns/local/skydns/east/staging/web
diff --git a/plugin/etcd/lookup_test.go b/plugin/etcd/lookup_test.go
index e185d341d..adf079443 100644
--- a/plugin/etcd/lookup_test.go
+++ b/plugin/etcd/lookup_test.go
@@ -10,7 +10,6 @@ import (
"github.com/coredns/coredns/plugin/etcd/msg"
"github.com/coredns/coredns/plugin/pkg/dnstest"
- "github.com/coredns/coredns/plugin/pkg/singleflight"
"github.com/coredns/coredns/plugin/pkg/tls"
"github.com/coredns/coredns/plugin/proxy"
"github.com/coredns/coredns/plugin/test"
@@ -232,7 +231,6 @@ func newEtcdPlugin() *Etcd {
Proxy: proxy.NewLookup([]string{"8.8.8.8:53"}),
PathPrefix: "skydns",
Ctx: context.Background(),
- Inflight: &singleflight.Group{},
Zones: []string{"skydns.test.", "skydns_extra.test.", "in-addr.arpa."},
Client: client,
}
diff --git a/plugin/etcd/setup.go b/plugin/etcd/setup.go
index 415feb2ef..e78ce6de7 100644
--- a/plugin/etcd/setup.go
+++ b/plugin/etcd/setup.go
@@ -6,7 +6,6 @@ import (
"github.com/coredns/coredns/core/dnsserver"
"github.com/coredns/coredns/plugin"
"github.com/coredns/coredns/plugin/pkg/dnsutil"
- "github.com/coredns/coredns/plugin/pkg/singleflight"
mwtls "github.com/coredns/coredns/plugin/pkg/tls"
"github.com/coredns/coredns/plugin/proxy"
@@ -50,7 +49,6 @@ func etcdParse(c *caddy.Controller) (*Etcd, bool, error) {
// Proxy: proxy.NewLookup([]string{"8.8.8.8:53", "8.8.4.4:53"}),
PathPrefix: "skydns",
Ctx: context.Background(),
- Inflight: &singleflight.Group{},
Stubmap: &stub,
}
var (