summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/queue/manager.go10
-rw-r--r--modules/queue/queue_bytefifo.go7
-rw-r--r--modules/queue/workerpool.go5
-rw-r--r--options/locale/locale_en-US.ini1
-rw-r--r--templates/admin/monitor.tmpl2
-rw-r--r--templates/admin/queue.tmpl2
6 files changed, 27 insertions, 0 deletions
diff --git a/modules/queue/manager.go b/modules/queue/manager.go
index 73c57540be..bba2c54ad2 100644
--- a/modules/queue/manager.go
+++ b/modules/queue/manager.go
@@ -84,6 +84,8 @@ type ManagedPool interface {
BoostWorkers() int
// SetPoolSettings sets the user updatable settings for the pool
SetPoolSettings(maxNumberOfWorkers, boostWorkers int, timeout time.Duration)
+ // NumberInQueue returns the total number of items in the pool
+ NumberInQueue() int64
// Done returns a channel that will be closed when the Pool's baseCtx is closed
Done() <-chan struct{}
}
@@ -427,6 +429,14 @@ func (q *ManagedQueue) SetPoolSettings(maxNumberOfWorkers, boostWorkers int, tim
}
}
+// NumberInQueue returns the number of items in the queue
+func (q *ManagedQueue) NumberInQueue() int64 {
+ if pool, ok := q.Managed.(ManagedPool); ok {
+ return pool.NumberInQueue()
+ }
+ return -1
+}
+
func (l ManagedQueueList) Len() int {
return len(l)
}
diff --git a/modules/queue/queue_bytefifo.go b/modules/queue/queue_bytefifo.go
index bf153d70bb..ead3828f33 100644
--- a/modules/queue/queue_bytefifo.go
+++ b/modules/queue/queue_bytefifo.go
@@ -135,6 +135,13 @@ func (q *ByteFIFOQueue) IsEmpty() bool {
return q.byteFIFO.Len(q.terminateCtx) == 0
}
+// NumberInQueue returns the number in the queue
+func (q *ByteFIFOQueue) NumberInQueue() int64 {
+ q.lock.Lock()
+ defer q.lock.Unlock()
+ return q.byteFIFO.Len(q.terminateCtx) + q.WorkerPool.NumberInQueue()
+}
+
// Flush flushes the ByteFIFOQueue
func (q *ByteFIFOQueue) Flush(timeout time.Duration) error {
select {
diff --git a/modules/queue/workerpool.go b/modules/queue/workerpool.go
index 100197c5e1..5f6ec18710 100644
--- a/modules/queue/workerpool.go
+++ b/modules/queue/workerpool.go
@@ -204,6 +204,11 @@ func (p *WorkerPool) NumberOfWorkers() int {
return p.numberOfWorkers
}
+// NumberInQueue returns the number of items in the queue
+func (p *WorkerPool) NumberInQueue() int64 {
+ return atomic.LoadInt64(&p.numInQueue)
+}
+
// MaxNumberOfWorkers returns the maximum number of workers automatically added to the pool
func (p *WorkerPool) MaxNumberOfWorkers() int {
p.lock.Lock()
diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini
index 722cade0eb..f52fef3c05 100644
--- a/options/locale/locale_en-US.ini
+++ b/options/locale/locale_en-US.ini
@@ -2820,6 +2820,7 @@ monitor.queue.type = Type
monitor.queue.exemplar = Exemplar Type
monitor.queue.numberworkers = Number of Workers
monitor.queue.maxnumberworkers = Max Number of Workers
+monitor.queue.numberinqueue = Number in Queue
monitor.queue.review = Review Config
monitor.queue.review_add = Review/Add Workers
monitor.queue.configuration = Initial Configuration
diff --git a/templates/admin/monitor.tmpl b/templates/admin/monitor.tmpl
index 8a90f9b647..a35b587bd5 100644
--- a/templates/admin/monitor.tmpl
+++ b/templates/admin/monitor.tmpl
@@ -48,6 +48,7 @@
<th>{{.i18n.Tr "admin.monitor.queue.type"}}</th>
<th>{{.i18n.Tr "admin.monitor.queue.exemplar"}}</th>
<th>{{.i18n.Tr "admin.monitor.queue.numberworkers"}}</th>
+ <th>{{.i18n.Tr "admin.monitor.queue.numberinqueue"}}</th>
<th></th>
</tr>
</thead>
@@ -58,6 +59,7 @@
<td>{{.Type}}</td>
<td>{{.ExemplarType}}</td>
<td>{{$sum := .NumberOfWorkers}}{{if lt $sum 0}}-{{else}}{{$sum}}{{end}}</td>
+ <td>{{$sum := .NumberInQueue}}{{if lt $sum 0}}-{{else}}{{$sum}}{{end}}</td>
<td><a href="{{$.Link}}/queue/{{.QID}}" class="button">{{if lt $sum 0}}{{$.i18n.Tr "admin.monitor.queue.review"}}{{else}}{{$.i18n.Tr "admin.monitor.queue.review_add"}}{{end}}</a>
</tr>
{{end}}
diff --git a/templates/admin/queue.tmpl b/templates/admin/queue.tmpl
index d2d2c83baf..a08b44277c 100644
--- a/templates/admin/queue.tmpl
+++ b/templates/admin/queue.tmpl
@@ -15,6 +15,7 @@
<th>{{.i18n.Tr "admin.monitor.queue.exemplar"}}</th>
<th>{{.i18n.Tr "admin.monitor.queue.numberworkers"}}</th>
<th>{{.i18n.Tr "admin.monitor.queue.maxnumberworkers"}}</th>
+ <th>{{.i18n.Tr "admin.monitor.queue.numberinqueue"}}</th>
</tr>
</thead>
<tbody>
@@ -24,6 +25,7 @@
<td>{{.Queue.ExemplarType}}</td>
<td>{{$sum := .Queue.NumberOfWorkers}}{{if lt $sum 0}}-{{else}}{{$sum}}{{end}}</td>
<td>{{if lt $sum 0}}-{{else}}{{.Queue.MaxNumberOfWorkers}}{{end}}</td>
+ <td>{{$sum := .Queue.NumberInQueue}}{{if lt $sum 0}}-{{else}}{{$sum}}{{end}}</td>
</tr>
</tbody>
</table>