mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-27 09:11:53 -05:00
dcd3a63128
The JSONRedirect/JSONOK/JSONError functions were put into "Base" context incorrectly, it would cause abuse. Actually, they are for "web context" only, so, move them to the correct place. And by the way, use them to simplify old code: +75 -196
46 lines
1.3 KiB
Go
46 lines
1.3 KiB
Go
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package admin
|
|
|
|
import (
|
|
"net/http"
|
|
"runtime"
|
|
|
|
"code.gitea.io/gitea/modules/context"
|
|
"code.gitea.io/gitea/modules/process"
|
|
"code.gitea.io/gitea/modules/setting"
|
|
)
|
|
|
|
// Stacktrace show admin monitor goroutines page
|
|
func 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 process
|
|
func StacktraceCancel(ctx *context.Context) {
|
|
pid := ctx.Params("pid")
|
|
process.GetManager().Cancel(process.IDType(pid))
|
|
ctx.JSONRedirect(setting.AppSubURL + "/admin/monitor/stacktrace")
|
|
}
|