diff options
author | zeripath <art27@cantab.net> | 2022-03-25 12:47:12 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-25 12:47:12 +0000 |
commit | 5fe764b1eb7bf4da752b047c25794316f31b68d6 (patch) | |
tree | d043315969709a45b845c457c05c8b1dca6e27e1 /modules/graceful/manager_windows.go | |
parent | e48f3b05278db8b292a4211d8735913361eb27c7 (diff) | |
download | gitea-5fe764b1eb7bf4da752b047c25794316f31b68d6.tar.gz gitea-5fe764b1eb7bf4da752b047c25794316f31b68d6.zip |
Add pprof labels in processes and for lifecycles (#19202)
Use pprof labelling to help identify goroutines with stacks.
Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'modules/graceful/manager_windows.go')
-rw-r--r-- | modules/graceful/manager_windows.go | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/modules/graceful/manager_windows.go b/modules/graceful/manager_windows.go index e5f5541ed3..66baddfa38 100644 --- a/modules/graceful/manager_windows.go +++ b/modules/graceful/manager_windows.go @@ -11,6 +11,7 @@ package graceful import ( "context" "os" + "runtime/pprof" "strconv" "sync" "time" @@ -40,11 +41,11 @@ type Manager struct { shutdownCtx context.Context hammerCtx context.Context terminateCtx context.Context - doneCtx context.Context + managerCtx context.Context shutdownCtxCancel context.CancelFunc hammerCtxCancel context.CancelFunc terminateCtxCancel context.CancelFunc - doneCtxCancel context.CancelFunc + managerCtxCancel context.CancelFunc runningServerWaitGroup sync.WaitGroup createServerWaitGroup sync.WaitGroup terminateWaitGroup sync.WaitGroup @@ -71,7 +72,17 @@ func (g *Manager) start() { g.terminateCtx, g.terminateCtxCancel = context.WithCancel(g.ctx) g.shutdownCtx, g.shutdownCtxCancel = context.WithCancel(g.ctx) g.hammerCtx, g.hammerCtxCancel = context.WithCancel(g.ctx) - g.doneCtx, g.doneCtxCancel = context.WithCancel(g.ctx) + g.managerCtx, g.managerCtxCancel = context.WithCancel(g.ctx) + + // Next add pprof labels to these contexts + g.terminateCtx = pprof.WithLabels(g.terminateCtx, pprof.Labels("graceful-lifecycle", "with-terminate")) + g.shutdownCtx = pprof.WithLabels(g.shutdownCtx, pprof.Labels("graceful-lifecycle", "with-shutdown")) + g.hammerCtx = pprof.WithLabels(g.hammerCtx, pprof.Labels("graceful-lifecycle", "with-hammer")) + g.managerCtx = pprof.WithLabels(g.managerCtx, pprof.Labels("graceful-lifecycle", "with-manager")) + + // Now label this and all goroutines created by this goroutine with the graceful-lifecycle manager + pprof.SetGoroutineLabels(g.managerCtx) + defer pprof.SetGoroutineLabels(g.ctx) // Make channels g.shutdownRequested = make(chan struct{}) |