mirror of
				https://codeberg.org/forgejo/forgejo.git
				synced 2025-10-27 12:31:02 +00:00 
			
		
		
		
	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:



---------
Co-authored-by: Jason Song <i@wolfogre.com>
Co-authored-by: Giteabot <teabot@gitea.io>
		
	
			
		
			
				
	
	
		
			59 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Handlebars
		
	
	
	
	
	
			
		
		
	
	
			59 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" .}}
 |