Commit f91c55d6 authored by Gonzalo Paniagua Javier's avatar Gonzalo Paniagua Javier Committed by Miek Gieben

Fix reloading in plugin/pprof. (#3454)

* Fix reloading in plugin/pprof.

Reloading the server without changing the listen address results in an
error because Startup is called for newly set up plugins before Shutdown
is called for the old ones.
Signed-off-by: default avatarGonzalo Paniagua Javier <gonzalo.mono@gmail.com>

* Use pkg/reuseport when listening.

Use coredns' newly added reuseport.
Signed-off-by: default avatarGonzalo Paniagua Javier <gonzalo.mono@gmail.com>

* Revert go.{mod,sum} changes.
Signed-off-by: default avatarGonzalo Paniagua Javier <gonzalo.mono@gmail.com>
parent f100d611
......@@ -7,6 +7,8 @@ import (
"net/http"
pp "net/http/pprof"
"runtime"
"github.com/coredns/coredns/plugin/pkg/reuseport"
)
type handler struct {
......@@ -17,7 +19,10 @@ type handler struct {
}
func (h *handler) Startup() error {
ln, err := net.Listen("tcp", h.addr)
// Reloading the plugin without changing the listening address results
// in an error unless we reuse the port because Startup is called for
// new handlers before Shutdown is called for the old ones.
ln, err := reuseport.Listen("tcp", h.addr)
if err != nil {
log.Errorf("Failed to start pprof handler: %s", err)
return err
......
......@@ -3,7 +3,6 @@ package pprof
import (
"net"
"strconv"
"sync"
"github.com/coredns/coredns/plugin"
clog "github.com/coredns/coredns/plugin/pkg/log"
......@@ -62,12 +61,7 @@ func setup(c *caddy.Controller) error {
}
pprofOnce.Do(func() {
c.OnStartup(h.Startup)
c.OnShutdown(h.Shutdown)
})
c.OnStartup(h.Startup)
c.OnShutdown(h.Shutdown)
return nil
}
var pprofOnce sync.Once
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment