58dfaf3a75
Although some features are mixed together in this PR, this PR is not that large, and these features are all related. Actually there are more than 70 lines are for a toy "test queue", so this PR is quite simple. Major features: 1. Allow site admin to clear a queue (remove all items in a queue) * Because there is no transaction, the "unique queue" could be corrupted in rare cases, that's unfixable. * eg: the item is in the "set" but not in the "list", so the item would never be able to be pushed into the queue. * Now site admin could simply clear the queue, then everything becomes correct, the lost items could be re-pushed into queue by future operations. 3. Split the "admin/monitor" to separate pages 4. Allow to download diagnosis report * In history, there were many users reporting that Gitea queue gets stuck, or Gitea's CPU is 100% * With diagnosis report, maintainers could know what happens clearly The diagnosis report sample: [gitea-diagnosis-20230510-192913.zip](https://github.com/go-gitea/gitea/files/11441346/gitea-diagnosis-20230510-192913.zip) , use "go tool pprof profile.dat" to view the report. Screenshots: ![image](https://github.com/go-gitea/gitea/assets/2114189/320659b4-2eda-4def-8dc0-5ea08d578063) ![image](https://github.com/go-gitea/gitea/assets/2114189/c5c46fae-9dc0-44ca-8cd3-57beedc5035e) ![image](https://github.com/go-gitea/gitea/assets/2114189/6168a811-42a1-4e64-a263-0617a6c8c4fe) --------- Co-authored-by: Jason Song <i@wolfogre.com> Co-authored-by: Giteabot <teabot@gitea.io>
60 lines
2.2 KiB
Handlebars
60 lines
2.2 KiB
Handlebars
{{template "admin/layout_head" (dict "ctxData" . "pageClass" "admin monitor")}}
|
|
<div class="admin-setting-content">
|
|
<h4 class="ui top attached header">
|
|
{{.locale.Tr "admin.monitor.queue" .Queue.GetName}}
|
|
</h4>
|
|
<div class="ui attached table segment">
|
|
<table class="ui very basic striped table">
|
|
<thead>
|
|
<tr>
|
|
<th>{{.locale.Tr "admin.monitor.queue.name"}}</th>
|
|
<th>{{.locale.Tr "admin.monitor.queue.type"}}</th>
|
|
<th>{{.locale.Tr "admin.monitor.queue.exemplar"}}</th>
|
|
<th>{{.locale.Tr "admin.monitor.queue.numberworkers"}}</th>
|
|
<th>{{.locale.Tr "admin.monitor.queue.maxnumberworkers"}}</th>
|
|
<th>{{.locale.Tr "admin.monitor.queue.numberinqueue"}}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>{{.Queue.GetName}}</td>
|
|
<td>{{.Queue.GetType}}</td>
|
|
<td>{{.Queue.GetItemTypeName}}</td>
|
|
<td>{{$sum := .Queue.GetWorkerNumber}}{{if lt $sum 0}}-{{else}}{{$sum}}{{end}}</td>
|
|
<td>{{if lt $sum 0}}-{{else}}{{.Queue.GetWorkerMaxNumber}}{{end}}</td>
|
|
<td>
|
|
{{$sum = .Queue.GetQueueItemNumber}}
|
|
{{if lt $sum 0}}
|
|
-
|
|
{{else}}
|
|
{{$sum}}
|
|
<form action="{{$.Link}}/remove-all-items" method="post" class="gt-dib gt-ml-4">
|
|
{{$.CsrfTokenHtml}}
|
|
<button class="ui tiny basic red button">{{.locale.Tr "admin.monitor.queue.settings.remove_all_items"}}</button>
|
|
</form>
|
|
{{end}}
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<h4 class="ui top attached header">
|
|
{{.locale.Tr "admin.monitor.queue.settings.title"}}
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<p>{{.locale.Tr "admin.monitor.queue.settings.desc"}}</p>
|
|
<form method="POST" action="{{.Link}}/set">
|
|
{{$.CsrfTokenHtml}}
|
|
<div class="ui form">
|
|
<div class="inline field">
|
|
<label for="max-number">{{.locale.Tr "admin.monitor.queue.settings.maxnumberworkers"}}</label>
|
|
<input name="max-number" type="text" placeholder="{{.locale.Tr "admin.monitor.queue.settings.maxnumberworkers.placeholder" .Queue.GetWorkerMaxNumber}}">
|
|
</div>
|
|
<button class="ui submit button">{{.locale.Tr "admin.monitor.queue.settings.submit"}}</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{{template "admin/layout_footer" .}}
|