fix: traceability of the middleware plugins
This commit is contained in:
parent
7792d197e6
commit
47faae25d7
2 changed files with 27 additions and 1 deletions
|
@ -357,7 +357,7 @@ func (b *Builder) buildConstructor(ctx context.Context, middlewareName string) (
|
||||||
}
|
}
|
||||||
|
|
||||||
middleware = func(next http.Handler) (http.Handler, error) {
|
middleware = func(next http.Handler) (http.Handler, error) {
|
||||||
return plug(ctx, next)
|
return newTraceablePlugin(ctx, middlewareName, plug, next)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/opentracing/opentracing-go/ext"
|
||||||
"github.com/traefik/traefik/v2/pkg/config/dynamic"
|
"github.com/traefik/traefik/v2/pkg/config/dynamic"
|
||||||
"github.com/traefik/traefik/v2/pkg/plugins"
|
"github.com/traefik/traefik/v2/pkg/plugins"
|
||||||
|
"github.com/traefik/traefik/v2/pkg/tracing"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PluginsBuilder the plugin's builder interface.
|
// PluginsBuilder the plugin's builder interface.
|
||||||
|
@ -31,3 +35,25 @@ func findPluginConfig(rawConfig map[string]dynamic.PluginConf) (string, map[stri
|
||||||
|
|
||||||
return pluginType, rawPluginConfig, nil
|
return pluginType, rawPluginConfig, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type traceablePlugin struct {
|
||||||
|
name string
|
||||||
|
h http.Handler
|
||||||
|
}
|
||||||
|
|
||||||
|
func newTraceablePlugin(ctx context.Context, name string, plug plugins.Constructor, next http.Handler) (*traceablePlugin, error) {
|
||||||
|
h, err := plug(ctx, next)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &traceablePlugin{name: name, h: h}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *traceablePlugin) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
|
||||||
|
s.h.ServeHTTP(rw, req)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *traceablePlugin) GetTracingInformation() (string, ext.SpanKindEnum) {
|
||||||
|
return s.name, tracing.SpanKindNoneEnum
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue