46 lines · 1.3 KB · Go
RawDownload
// Copyright 2023 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package admin import (	"net/http"	"runtime" 	"forgejo.org/modules/process"	"forgejo.org/modules/setting"	"forgejo.org/services/context") // Stacktrace show admin monitor goroutines pagefunc Stacktrace(ctx *context.Context) {	ctx.Data["Title"] = ctx.Tr("admin.monitor")	ctx.Data["PageIsAdminMonitorStacktrace"] = true 	ctx.Data["GoroutineCount"] = runtime.NumGoroutine() 	show := ctx.FormString("show")	ctx.Data["ShowGoroutineList"] = show	// by default, do not do anything which might cause server errors, to avoid unnecessary 500 pages.	// this page is the entrance of the chance to collect diagnosis report.	if show != "" {		showNoSystem := show == "process"		processStacks, processCount, _, err := process.GetManager().ProcessStacktraces(false, showNoSystem)		if err != nil {			ctx.ServerError("GoroutineStacktrace", err)			return		} 		ctx.Data["ProcessStacks"] = processStacks		ctx.Data["ProcessCount"] = processCount	} 	ctx.HTML(http.StatusOK, tplStacktrace)} // StacktraceCancel cancels a processfunc StacktraceCancel(ctx *context.Context) {	pid := ctx.Params("pid")	process.GetManager().Cancel(process.IDType(pid))	ctx.JSONRedirect(setting.AppSubURL + "/admin/monitor/stacktrace")}