From 35c1639ee31efc864afef0715eac9cccb60f3cc3 Mon Sep 17 00:00:00 2001 From: Ben Schumacher Date: Mon, 25 Sep 2023 20:22:25 +0200 Subject: [PATCH] [MM-54291] Add goroutines profile to support package (#24478) --- server/channels/app/support_packet.go | 16 ++++++++++++++++ server/channels/app/support_packet_test.go | 2 ++ 2 files changed, 18 insertions(+) diff --git a/server/channels/app/support_packet.go b/server/channels/app/support_packet.go index aa3b9b4653..ca979ec8b4 100644 --- a/server/channels/app/support_packet.go +++ b/server/channels/app/support_packet.go @@ -42,6 +42,7 @@ func (a *App) GenerateSupportPacket(c *request.Context) []model.FileData { "notification log": a.getNotificationsLog, "cpu profile": a.createCPUProfile, "heap profile": a.createHeapProfile, + "goroutines": a.createGoroutineProfile, } for name, fn := range functions { @@ -333,3 +334,18 @@ func (a *App) createHeapProfile(*request.Context) (*model.FileData, error) { } return fileData, nil } + +func (a *App) createGoroutineProfile(_ *request.Context) (*model.FileData, error) { + var b bytes.Buffer + + err := pprof.Lookup("goroutine").WriteTo(&b, 2) + if err != nil { + return nil, errors.Wrap(err, "failed to lookup goroutine profile") + } + + fileData := &model.FileData{ + Filename: "goroutines", + Body: b.Bytes(), + } + return fileData, nil +} diff --git a/server/channels/app/support_packet_test.go b/server/channels/app/support_packet_test.go index a4f371cb7e..d025ba2e77 100644 --- a/server/channels/app/support_packet_test.go +++ b/server/channels/app/support_packet_test.go @@ -110,6 +110,7 @@ func TestGenerateSupportPacket(t *testing.T) { "notifications.log", "cpu.prof", "heap.prof", + "goroutines", } for _, fileData := range fileDatas { require.NotNil(t, fileData) @@ -132,6 +133,7 @@ func TestGenerateSupportPacket(t *testing.T) { "cpu.prof", "heap.prof", "warning.txt", + "goroutines", } rFileNames = nil for _, fileData := range fileDatas {