mirror of
https://github.com/coredns/coredns.git
synced 2025-11-21 19:32:21 -05:00
Remove server addr from the context (#2722)
* more Signed-off-by: Miek Gieben <miek@miek.nl> * Remove server addr from the context This was added twice, just leave the server which also holds the address. Conflicts with #2719 but should be easy to fix. Signed-off-by: Miek Gieben <miek@miek.nl> * doesn't need server context Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
@@ -3,7 +3,7 @@ package metrics
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/coredns/coredns/plugin/metrics/vars"
|
||||
"github.com/coredns/coredns/core/dnsserver"
|
||||
)
|
||||
|
||||
// WithServer returns the current server handling the request. It returns the
|
||||
@@ -15,4 +15,10 @@ import (
|
||||
// Basic usage with a metric:
|
||||
//
|
||||
// <metric>.WithLabelValues(metrics.WithServer(ctx), labels..).Add(1)
|
||||
func WithServer(ctx context.Context) string { return vars.WithServer(ctx) }
|
||||
func WithServer(ctx context.Context) string {
|
||||
srv := ctx.Value(dnsserver.Key{})
|
||||
if srv == nil {
|
||||
return ""
|
||||
}
|
||||
return srv.(*dnsserver.Server).Addr
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ func (m *Metrics) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg
|
||||
rw := dnstest.NewRecorder(w)
|
||||
status, err := plugin.NextOrFailure(m.Name(), m.Next, ctx, rw, r)
|
||||
|
||||
vars.Report(ctx, state, zone, rcode.ToString(rw.Rcode), rw.Len, rw.Start)
|
||||
vars.Report(WithServer(ctx), state, zone, rcode.ToString(rw.Rcode), rw.Len, rw.Start)
|
||||
|
||||
return status, err
|
||||
}
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
package vars
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/coredns/coredns/plugin"
|
||||
"github.com/coredns/coredns/request"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
// Report reports the metrics data associated with request.
|
||||
func Report(ctx context.Context, req request.Request, zone, rcode string, size int, start time.Time) {
|
||||
func Report(server string, req request.Request, zone, rcode string, size int, start time.Time) {
|
||||
// Proto and Family.
|
||||
net := req.Proto()
|
||||
fam := "1"
|
||||
@@ -19,8 +17,6 @@ func Report(ctx context.Context, req request.Request, zone, rcode string, size i
|
||||
fam = "2"
|
||||
}
|
||||
|
||||
server := WithServer(ctx)
|
||||
|
||||
typ := req.QType()
|
||||
RequestCount.WithLabelValues(server, zone, net, fam).Inc()
|
||||
RequestDuration.WithLabelValues(server, zone).Observe(time.Since(start).Seconds())
|
||||
@@ -41,15 +37,6 @@ func Report(ctx context.Context, req request.Request, zone, rcode string, size i
|
||||
ResponseRcode.WithLabelValues(server, zone, rcode).Inc()
|
||||
}
|
||||
|
||||
// WithServer returns the current server handling the request.
|
||||
func WithServer(ctx context.Context) string {
|
||||
srv := ctx.Value(plugin.ServerCtx{})
|
||||
if srv == nil {
|
||||
return ""
|
||||
}
|
||||
return srv.(string)
|
||||
}
|
||||
|
||||
var monitorType = map[uint16]struct{}{
|
||||
dns.TypeAAAA: struct{}{},
|
||||
dns.TypeA: struct{}{},
|
||||
|
||||
@@ -106,6 +106,3 @@ var TimeBuckets = prometheus.ExponentialBuckets(0.00025, 2, 16) // from 0.25ms t
|
||||
|
||||
// ErrOnce is returned when a plugin doesn't support multiple setups per server.
|
||||
var ErrOnce = errors.New("this plugin can only be used once per Server Block")
|
||||
|
||||
// ServerCtx is the context key to pass server address context to the plugins handling the request.
|
||||
type ServerCtx struct{}
|
||||
|
||||
@@ -4,7 +4,6 @@ import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/coredns/coredns/plugin"
|
||||
"github.com/coredns/coredns/plugin/pkg/dnstest"
|
||||
"github.com/coredns/coredns/plugin/pkg/rcode"
|
||||
"github.com/coredns/coredns/plugin/test"
|
||||
@@ -69,7 +68,7 @@ func TestTrace(t *testing.T) {
|
||||
every: 1,
|
||||
tracer: m,
|
||||
}
|
||||
ctx := context.WithValue(context.TODO(), plugin.ServerCtx{}, server)
|
||||
ctx := context.TODO()
|
||||
if _, err := tr.ServeDNS(ctx, w, tc.question); err != nil {
|
||||
t.Fatalf("Error during tr.ServeDNS(ctx, w, %v): %v", tc.question, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user